f = open("文件操做.txt", mode='r', encoding="utf-8")
...
f.close()
f = open("送別.txt" mode="w", encoding="utf-8") f.write("下馬飲君酒, 問君何所之?\n") f.write("君言不得意, 歸臥南山陲。\n") f.write("但去莫復問, 白雲無盡時。\n") f.close()
1.read():一次性全都讀取出來。弊端:佔內存。若是文件過大,容易致使內存崩潰。python
f = open("送別.txt", mode="r", encoding="utf-8") content = f.read() print(content)
f.close() 結果: 下馬飲君酒, 問君何所之? 君言不得意, 歸臥南山陲。 但去莫復問, 白雲無盡時。
2.read(n):讀取n個字符。須要注意的是,若是再次讀取,那麼會在當前位置繼續去讀,而不是從頭讀。app
f = open("送別.txt", mode="r", encoding="utf-8") content = f.read(5) print(content)
f.close() 結果: 下馬飲君酒
f = open("送別.txt", mode="r", encoding="utf-8") content = f.readline() print(content)
f.close() 結果: 下馬飲君酒, 問君何所之?
f = open("送別.txt", mode="r", encoding="utf-8") content = f.readlines() print(content)
f.close() 結果: ['下馬飲君酒, 問君何所之?\n', '君言不得意, 歸臥南山陲。\n', '但去莫復問, 白雲無盡時。']
循環讀取ui
f = open("送別.txt", mode="r", encoding="utf-8") for line in f: print(line.strip()) f.close() 結果: 下馬飲君酒, 問君何所之? 君言不得意, 歸臥南山陲。 但去莫復問, 白雲無盡時。
f = open("送別.txt", mode="a", encoding="utf-8") f.write("- 王維")
f.close() 結果: 下馬飲君酒, 問君何所之? 君言不得意, 歸臥南山陲。 但去莫復問, 白雲無盡時。 - 王維
從磁盤根目錄找文件編碼
指相對於當前程序所在的文件夾spa
f = open("送別.txt", mode="rb") content = f.read() print(content)
f.close() 結果: b'\xe4\xb8\x8b\xe9\xa9\xac\xe9\xa5\xae\xe5\x90\x9b\xe9\x85\x92\xef\xbc\x8c \xe9\x97\xae\xe5\x90\x9b\xe4\xbd\x95\xe6\x89\x80\xe4\xb9\x8b\xef\xbc\x9f\r\n\xe5\x90\x9b\xe8\xa8\x80\xe4\xb8\x8d\xe5\xbe\x97\xe6\x84\x8f\xef\xbc\x8c \xe5\xbd\x92\xe5\x8d\xa7\xe5\x8d\x97\xe5\xb1\xb1\xe9\x99\xb2\xe3\x80\x82\r\n\xe4\xbd\x86\xe5\x8e\xbb\xe8\x8e\xab\xe5\xa4\x8d\xe9\x97\xae\xef\xbc\x8c \xe7\x99\xbd\xe4\xba\x91\xe6\x97\xa0\xe5\xb0\xbd\xe6\x97\xb6\xe3\x80\x82'
wb模式下,能夠不指定打開文件的編碼。可是在寫文件的時候必須將字符串轉化成utf-8的bytes數據,不然報錯:TypeError: a bytes-like object is required, not 'str'code
f = open("送別.txt", mode="wb") f.write(" 五言古詩".encode("utf-8"))
f.close() 結果: 五言古詩
將圖片(長城.jpg)從C盤複製到D盤:視頻
f1 = open(r"c:\長城.jpg", mode="rb") f2 = open(r"d:\長城.jpg", mode="wb") for line in f1: f2.read(line) f1.close() f2.close()
# place.txt: # 北京 # 上海 # 深圳 f = open("place.txt", mode="r+", encoding="utf-8") content = f.read() f.write("廣州") print(content)
f.close() 結果: 北京 上海 深圳 # place.txt: # 北京 # 上海 # 深圳 # 廣州
注意:在r+模式下,不論讀取多少內容,再次寫入時,都是在末尾寫入對象
送別.txt: 下馬飲 君酒,問君何所之? f = open("送別.txt", mode="r+", encoding="utf-8") content = f.read(3) f.write("\n君言不得意,歸臥南山陲。") print(content) f.close() 結果: 下馬飲 送別.txt: 下馬飲君酒,問君何所之? 君言不得意,歸臥南山陲。
先寫後讀(錯誤示範)blog
若是直接寫入的話,則在開頭寫入,覆蓋開頭的內容圖片
place.txt: 北京 上海 深圳 f = open("place.txt", mode="r+", encoding="utf-8") f.write("廣州") content = f.read() print(content) f.close() 結果: 上海 深圳 place.txt: 廣州 上海 深圳
f = open("introduction.txt", mode="w+", encoding="utf-8") f.write("你好,我叫賽利亞") content = f.read() print(content) f.close() 結果:
f = open("introduction.txt", mode="a+", encoding="utf-8") f.write("祝你玩的愉快!") content = f.read() print(content) f.close() 結果: introduction.txt: 你好,我叫賽利亞祝你玩的愉快!
introduction.txt: 你好,我叫賽利亞 f = open("introduction.txt", mode="r", encoding="utf-8") f.seek(3) content = f.read(3) print(content)
f.close() 結果: 好,我
程序返回當前光標的位置
introduction.txt: 你好,我叫賽利亞 f = open("introduction.txt", mode="r", encoding="utf-8") content = f.read(3) print(f.tell()) # 9
f.close()
默認從開頭截取到光標位置,後面的內容將會被刪除。
introduction.txt: 你好,我叫賽利亞 f = open("introduction.txt", mode="r+", encoding="utf-8") f.seek(3) f.truncate() f.close() introduction.txt: 你
truncate(n):從開頭載取到n位置,後面的內容將會被刪除。
introduction.txt: 你好,我叫賽利亞 f = open("introduction.txt", mode="r+", encoding="utf-8") f.truncate(3) f.close() introduction.txt: 你
文件操做沒有直接修改文件功能,只能將文件中的內容讀取到內存中,將信息修改完畢,而後將源文件刪除,將新的文件的名字改爲老文件的名字。
import os with open("唐詩", mode="r", encoding="utf-8") as f1,\ open("唐詩_副本", mode="w", encoding="utf-8") as f2: for line in f1: line = line.replace("?", "。") f2.write(line) os.remove("唐詩") # 刪除源文件 os.rename("唐詩_副本", "唐詩") # 把副本更名爲源文件
f1 = open(r"C:\日記本.txt", mode="r", encoding="utf-8") f2 = open(r"D:\日記本.txt", mode="w", encoding="utf-8") for line in f1: f2.write(line) f1.close() f2.close()
data.txt: 序號,名稱,價格,庫存 1,蘋果,5,6000 2,榴蓮,20,5000 3,香蕉,3,2000 with open("data.txt", mode="r", encoding="utf-8") as f: titles = f.readline().strip() t_list = titles.split(",") lst = [] for line in f: dic = {} line = line.strip().split(",") for i in range(len(line)): dic[t_list[i]] = line[i] lst.append(dic) print(lst) 結果: [{'序號': '1', '名稱': '蘋果', '價格': '5', '庫存': '6000'}, {'序號': '2', '名稱': '榴蓮', '價格': '20', '庫存': '5000'}, {'序號': '3', '名稱': '香蕉', '價格': '3', '庫存': '2000'}]