文件 file
- 文件的創(chuàng)建
f = open("./filedemo.txt", "w")
- 文件讀取
f1 = open("./filedemo.txt")
f1.read() # 讀取所有內(nèi)容
f1.read(6) # 讀取N個字符
line = f1.readline() # 讀一行
allline = f1.readlines() # 讀取所有行汇鞭,返回一個列表饼疙;
# for循環(huán)讀取 (一般都用for循環(huán)來讀取文件其弊,有利于內(nèi)存)
for line in f1:
oneline = line.rstrip("\n")
print(oneline)
-
文件寫入
-
f.write(string)
會把 string 的內(nèi)容寫入到文件中,并返回寫入的字符數(shù)椒拗。 - 也可以用“wb”模式寫入二進制數(shù)據(jù)似将;
- 用with代碼塊模式,會在執(zhí)行完代碼塊后自動關(guān)閉文件蚀苛;
-
with open(r".\tu1.jpg", "rb") as tu1:
with open(r".\tu2.jpg", "wb") as tu2:
for line1 in tu1:
tu2.write(line1)
- 文件追加
f = open(r".\filedemo.txt", "a")
f.write("\nappend content...")
f.close()
-
f.seek()
- f.tell()` 返回一個整數(shù)在验,給出文件對象在文件中的當前位置,如果有中文堵未,有可能會報錯腋舌。因為如果是GBK中文是2個字節(jié),如是utf-8編碼渗蟹,一個中文是三個字節(jié)侦厚;
-
f.tell()
- 返回一個整數(shù),給出光標在文件中的當前位置拙徽;
-
f.flush()
- 把內(nèi)存里的內(nèi)容刷到硬盤,相當于保存;
- with as
with open(r".\fread.txt", "r") as fread, open(r".\fwrite.txt", "w") as fwrite:
# 就可以在此代碼塊里對這兩個文件對象進行操作诗宣;
for line in fread:
fwrite.write(line)
- 文件的修改
import os
old_name = "old_file.txt"
new_name = "new_file.txt"
with open(r".\old_file.txt", "r", encoding="utf-8") as old_file, open(r".\new_file.txt", "w") as new_file:
for line in old_file:
if "o" in line: # 如果一行里有需要替換的關(guān)鍵詞
new_line = line.replace("o", "[o]") # 替換關(guān)鍵詞
new_file.write(new_line) # 寫到新文件
continue # 新的循環(huán)
new_file.write(line) # 沒有進入if膘怕,就把原來的一行寫入新文件。
os.remove(old_name) # 刪除原文件
os.renames(new_name, old_name) # 把新文件的文件名改成原原件名
- file.truncate()
- 清空文件所有內(nèi)容
- 注意:僅當以 "r+" "rb+" "w" "wb" "wb+"等以可寫模式打開的文件才可以執(zhí)行該功能召庞,否則報錯
f = open(r".\old_file.txt", "w")
f.truncate()
f.close()
- 文本模式
t | 文本模式 (默認)岛心。 |
---|---|
x | 寫模式来破,新建一個文件,如果該文件已存在則會報錯忘古。 |
b | 二進制模式徘禁。 |
+ | 打開一個文件進行更新(可讀可寫)。 |
U | 通用換行模式(不推薦)髓堪。 |
r | 以只讀方式打開文件送朱。文件的指針將會放在文件的開頭。這是默認模式干旁。 |
rb | 以二進制格式打開一個文件用于只讀驶沼。文件指針將會放在文件的開頭。這是默認模式争群。一般用于非文本文件如圖片等回怜。 |
r+ | 打開一個文件用于讀寫。文件指針將會放在文件的開頭换薄。 |
rb+ | 以二進制格式打開一個文件用于讀寫玉雾。文件指針將會放在文件的開頭。一般用于非文本文件如圖片等轻要。 |
w | 打開一個文件只用于寫入复旬。如果該文件已存在則打開文件,并從開頭開始編輯伦腐,即原有內(nèi)容會被刪除赢底。如果該文件不存在,創(chuàng)建新文件柏蘑。 |
wb | 以二進制格式打開一個文件只用于寫入幸冻。如果該文件已存在則打開文件,并從開頭開始編輯咳焚,即原有內(nèi)容會被刪除洽损。如果該文件不存在,創(chuàng)建新文件革半。一般用于非文本文件如圖片等碑定。 |
w+ | 打開一個文件用于讀寫。如果該文件已存在則打開文件又官,并從開頭開始編輯延刘,即原有內(nèi)容會被刪除。如果該文件不存在六敬,創(chuàng)建新文件碘赖。 |
wb+ | 以二進制格式打開一個文件用于讀寫。如果該文件已存在則打開文件,并從開頭開始編輯普泡,即原有內(nèi)容會被刪除播掷。如果該文件不存在,創(chuàng)建新文件撼班。一般用于非文本文件如圖片等歧匈。 |
a | 打開一個文件用于追加。如果該文件已存在砰嘁,文件指針將會放在文件的結(jié)尾件炉。也就是說,新的內(nèi)容將會被寫入到已有內(nèi)容之后般码。如果該文件不存在妻率,創(chuàng)建新文件進行寫入。 |
ab | 以二進制格式打開一個文件用于追加板祝。如果該文件已存在宫静,文件指針將會放在文件的結(jié)尾。也就是說券时,新的內(nèi)容將會被寫入到已有內(nèi)容之后孤里。如果該文件不存在,創(chuàng)建新文件進行寫入橘洞。 |
a+ | 打開一個文件用于讀寫捌袜。如果該文件已存在,文件指針將會放在文件的結(jié)尾炸枣。文件打開時會是追加模式虏等。如果該文件不存在,創(chuàng)建新文件用于讀寫适肠。 |
ab+ | 以二進制格式打開一個文件用于追加霍衫。如果該文件已存在,文件指針將會放在文件的結(jié)尾侯养。如果該文件不存在敦跌,創(chuàng)建新文件用于讀寫。 |