Python學(xué)習(xí)筆記05-文件讀寫

  1. 打開文件
  2. 讀/寫數(shù)據(jù)
  3. 關(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ù)的長(zhǎng)度(單位是字節(jié)),如果沒有傳入num,那么就表示讀取文件中所有的數(shù)據(jù)。

  1. 直接讀取文件
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]+'"'+",") 
  1. 使用文件上下文管理器
#打開文件
#用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)
  1. 二進(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()

END

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容