- 打開文件
- 讀/寫數(shù)據(jù)
- 關(guān)閉文件
打開文件(open)
在python疯溺,使用open函數(shù)鳖昌,可以打開一個(gè)已經(jīng)存在的文件描沟,或者創(chuàng)建一個(gè)新文件
f = open('filename', 'r') # 讀模式
f = open('filename', 'w') # 寫模式
f = open('filename', 'a') # 追加模式
模式說明
訪問模式 | 說明 |
---|---|
r | 以只讀方式打開文件。文件的指針將會(huì)放在文件的開頭。這是默認(rèn)模式尸折。 |
w | 打開一個(gè)文件只用于寫入。如果該文件已存在則將其覆蓋殷蛇。如果該文件不存在实夹,創(chuàng)建新文件。 |
a | 打開一個(gè)文件用于追加粒梦。如果該文件已存在亮航,文件指針將會(huì)放在文件的結(jié)尾。也就是說谍倦,新的內(nèi)容將會(huì)被寫入到已有內(nèi)容之后塞赂。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入昼蛀。 |
rb | 以二進(jìn)制格式打開一個(gè)文件用于只讀宴猾。文件指針將會(huì)放在文件的開頭。這是默認(rèn)模式叼旋。 |
wb | 以二進(jìn)制格式打開一個(gè)文件只用于寫入仇哆。如果該文件已存在則將其覆蓋。如果該文件不存在夫植,創(chuàng)建新文件讹剔。 |
ab | 以二進(jìn)制格式打開一個(gè)文件用于追加。如果該文件已存在详民,文件指針將會(huì)放在文件的結(jié)尾延欠。也就是說,新的內(nèi)容將會(huì)被寫入到已有內(nèi)容之后沈跨。如果該文件不存在由捎,創(chuàng)建新文件進(jìn)行寫入。 |
r+ | 打開一個(gè)文件用于讀寫饿凛。文件指針將會(huì)放在文件的開頭狞玛。 |
w+ | 打開一個(gè)文件用于讀寫。如果該文件已存在則將其覆蓋涧窒。如果該文件不存在心肪,創(chuàng)建新文件。 |
a+ | 打開一個(gè)文件用于讀寫纠吴。如果該文件已存在硬鞍,文件指針將會(huì)放在文件的結(jié)尾。文件打開時(shí)會(huì)是追加模式。如果該文件不存在固该,創(chuàng)建新文件用于讀寫碑隆。 |
rb+ | 以二進(jìn)制格式打開一個(gè)文件用于讀寫。文件指針將會(huì)放在文件的開頭蹬音。 |
wb+ | 以二進(jìn)制格式打開一個(gè)文件用于讀寫。如果該文件已存在則將其覆蓋休玩。如果該文件不存在著淆,創(chuàng)建新文件。 |
ab+ | 以二進(jìn)制格式打開一個(gè)文件用于追加拴疤。如果該文件已存在永部,文件指針將會(huì)放在文件的結(jié)尾。如果該文件不存在呐矾,創(chuàng)建新文件用于讀寫苔埋。 |
讀取文件內(nèi)容(read)
使用read(num)可以從文件中讀取數(shù)據(jù),num表示要從文件中讀取的數(shù)據(jù)的長度(單位是字節(jié))蜒犯,如果沒有傳入num组橄,那么就表示讀取文件中所有的數(shù)據(jù)。
- 直接讀取文件
file1 = open("test.txt")
file2 = open("output.txt","w")
while True:
line = file1.readline()
#這里可以進(jìn)行邏輯處理
file2.write('"'+line[:s]+'"'+",")
if not line:
break
#記住文件處理完罚随,關(guān)閉是個(gè)好習(xí)慣
file1.close()
file2.close()
讀文件有3種方法:
- read()將文本文件所有行讀到一個(gè)字符串中玉工。
- readline()是一行一行的讀,占內(nèi)存小淘菩,速度慢遵班。
- readlines()是將文本文件中所有行讀到一個(gè)list中,文本文件每一行是list的一個(gè)元素潮改。 優(yōu)點(diǎn):readline()可以在讀行過程中跳過特定行狭郑。
2.使用for循環(huán)讀取文件
file2 = open("output.txt","w")
for line in open("test.txt"):
#這里可以進(jìn)行邏輯處理
file2.write('"'+line[:s]+'"'+",")
- 使用文件上下文管理器
#打開文件
#用with..open自帶關(guān)閉文本的功能
with open('somefile.txt', 'r') as f:
data = f.read()
# loop整個(gè)文檔
with open('somefile.txt', 'r') as f:
for line in f:
# 處理每一行
# 寫入文本
with open('somefile.txt', 'w') as f:
f.write(text1)
f.write(text2)
...
# 把要打印的line寫入文件中
with open('somefile.txt', 'w') as f:
print(line1, file=f)
print(line2, file=f)
- 二進(jìn)制文件讀取
Python默認(rèn)讀取的都是文本文件。要是想要讀取二進(jìn)制文件汇在,需要把剛剛的'r'改成'rb'翰萨。
f = open('image.jpg', 'rb')
print(f.read())
# 輸出 '\xff\xd8\xff\xe1\x00\x18Exif\x00\x00...' # 十六進(jìn)制表示的字節(jié)
寫入數(shù)據(jù)到文件(write)
使用write()可以完成向文件寫入數(shù)據(jù)。
f = open('test.txt', 'w')
f.write('hello world!')
f.close()
如果文件不存在那么創(chuàng)建趾疚,如果存在那么就先清空缨历,然后寫入數(shù)據(jù)。
關(guān)閉文件(close)
# 新建一個(gè)文件糙麦,文件名為:test.txt
f = open('test.txt', 'w')
# 關(guān)閉這個(gè)文件
f.close()