1,文本文件
-
普通打開
f.open
f.close
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 f
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
方法將文件按行讀取到一個列表容器中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()
-
寫入文本文件
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,二進制文件
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文件
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()