python文件讀寫和異常

1,文本文件python

  • 普通打開json

    f.openapp

    f.closeui

    def main():
        f = None
        try:
            f = open('致橡樹.txt', 'r', encoding='utf-8')
            print(f.read())
        except FileNotFoundError:
            print('沒法打開指定的文件!')
        except LookupError:
            print('指定了未知的編碼!')
        except UnicodeDecodeError:
            print('讀取文件時解碼錯誤!')
        finally:
            if f:
                f.close()
    
    
    if __name__ == '__main__':
        main()
  • with關鍵字編碼

    with open as fcode

    def main():
        try:
            with open('致橡樹.txt', 'r', encoding='utf-8') as f:
                print(f.read())
        except FileNotFoundError:
            print('沒法打開指定的文件!')
        except LookupError:
            print('指定了未知的編碼!')
        except UnicodeDecodeError:
            print('讀取文件時解碼錯誤!')
    
    
    if __name__ == '__main__':
        main()
  • for-in循環逐行讀取或者用readlines方法將文件按行讀取到一個列表容器中utf-8

    import time
    
    
    def main():
        # 一次性讀取整個文件內容
        with open('致橡樹.txt', 'r', encoding='utf-8') as f:
            print(f.read())
    
        # 經過for-in循環逐行讀取
        with open('致橡樹.txt', mode='r') as f:
            for line in f:
                print(line, end='')
                time.sleep(0.5)
        print()
    
        # 讀取文件按行讀取到列表中
        with open('致橡樹.txt') as f:
            lines = f.readlines()
        print(lines)
    
    
    if __name__ == '__main__':
        main()
  • 寫入文本文件string

    from math import  sqrt
    
    
    def is_prime(n):
         """判斷市素數"""
         assert  n > 0
         for factor in range(2,int(sqrt(n) + 1)):
             if n %factor == 0:
                 return  False
         return True if n != 1 else False
    
    
    def main():
         filenames = ('a.txt', 'b.txt', 'c.txt')
         fs_list = []
         try:
             for filename in filenames:
                 fs_list.append(open(filename,'w',encoding='utf-8'))
    
             for num in range(1,10000):
                 if is_prime(num):
                     if num < 100:
                         fs_list[0].write(str(num)+"\n")
                     elif num < 1000:
                         fs_list[1].write(str(num)+"\n")
                     else:
                         fs_list[2].write(str(num)+'\n')
         except IOError as e:
             print(e)
             print("文件寫入錯誤")
         finally:
             for fs in fs_list:
                 fs.close()
         print("操做完成")
    
    if __name__ == '__main__':
        main()

2,二進制文件it

def main():
    try:
        with open('guido.jpg', 'rb') as fs1:
            data = fs1.read()
            print(type(data))  # <class 'bytes'>
        with open('吉多.jpg', 'wb') as fs2:
            fs2.write(data)
    except FileNotFoundError as e:
        print('指定的文件沒法打開.')
    except IOError as e:
        print('讀寫文件時出現錯誤.')
    print('程序執行結束.')


if __name__ == '__main__':
    main()

3,json文件table

JSON跟Python中的字典實際上是同樣同樣的,事實上JSON的數據類型和Python的數據類型是很容易找到對應關係的,以下面兩張表所示。

JSON Python
object dict
array list
string str
number (int / real) int / float
true / false True / False
null None
Python JSON
dict object
list, tuple array
str string
int, float, int- & float-derived Enums number
True / False true / false
None null

咱們使用Python中的json模塊就能夠將字典或列表以JSON格式保存到文件中,代碼以下所示。

import json


def main():
    mydict = {
        'name': '駱昊',
        'age': 38,
        'qq': 957658,
        'friends': ['王大錘', '白元芳'],
        'cars': [
            {'brand': 'BYD', 'max_speed': 180},
            {'brand': 'Audi', 'max_speed': 280},
            {'brand': 'Benz', 'max_speed': 320}
        ]
    }
    try:
        with open('data.json', 'w', encoding='utf-8') as fs:
            json.dump(mydict, fs)
    except IOError as e:
        print(e)
    print('保存數據完成!')


if __name__ == '__main__':
    main()
相關文章
相關標籤/搜索