Python - 檔案讀寫

來源:互聯網
上載者:User

標籤:運行   連續   append   alt   rip   支援   9.png   highlight   int   

r:唯讀模式(如果沒指定模式,預設為唯讀模式)

# -*- coding:utf-8 -*-__author__ = "MuT6 Sch01aR"f = open(file=‘file_test‘, mode=‘r‘)  # 檔案控制代碼fr = f.read()print(fr)f.close()  # 關閉檔案

運行結果

如果對同一個檔案控制代碼連續進行 read() 操作的話,只有第一個 read() 操作有內容,其餘的都是空白的

# -*- coding:utf-8 -*-__author__ = "MuT6 Sch01aR"f = open(file=‘file_test‘, mode=‘r‘)  # 檔案控制代碼fr = f.read()fr1 = f.read()fr2 = f.read()print(fr)print("---------")print(fr1)print("+++++++++")print("---------")print(fr2)print("+++++++++")f.close()  # 關閉檔案

運行結果

因為 read() 操作是連續的

readline() 進行一行一行地讀取

# -*- coding:utf-8 -*-__author__ = "MuT6 Sch01aR"f = open(file=‘file_test‘, mode=‘r‘)  # 檔案控制代碼print(f.readline())print(f.readline())print(f.readline())print(f.readline())print(f.readline())f.close()  # 關閉檔案

運行結果

因為每一行末尾都有一個分行符號 \n,列印的時候 \n 也列印了,所以空了一行

readlines() 以行為單位讀取檔案內容

# -*- coding:utf-8 -*-__author__ = "MuT6 Sch01aR"f = open(file=‘file_test‘, mode=‘r‘)  # 檔案控制代碼fr = f.readlines()print(fr)f.close()  # 關閉檔案

運行結果

結果是列表,每行字串為該列表的元素,每行末尾有個分行符號 \n

列印每行的內容

# -*- coding:utf-8 -*-__author__ = "MuT6 Sch01aR"f = open(file=‘file_test‘, mode=‘r‘)  # 檔案控制代碼for line in f.readlines():    print(line.strip())  # strip() 去掉分行符號f.close()  # 關閉檔案

運行結果

readlines() 遇到大檔案時比較占記憶體,因為 readlines() 直接將整個檔案讀入記憶體,推薦用下面的方法

# -*- coding:utf-8 -*-__author__ = "MuT6 Sch01aR"f = open(file=‘file_test‘, mode=‘r‘)  # 檔案控制代碼for line in f:    print(line.strip())  # strip() 去掉分行符號f.close()  # 關閉檔案

這個方法是一行一行地讀

readable() 判斷檔案是否可讀

# -*- coding:utf-8 -*-__author__ = "MuT6 Sch01aR"f = open(file=‘file_test‘, mode=‘r‘)  # 檔案控制代碼fr = f.readable()print(fr)f.close()  # 關閉檔案

運行結果

w:唯寫模式,檔案不存在則建立,檔案存在則覆蓋原檔案

# -*- coding:utf-8 -*-__author__ = "MuT6 Sch01aR"f = open(file=‘file_w‘, mode=‘w‘)f.write(‘憫農\n‘)f.write(‘李紳\n‘)f.write(‘春種一粒粟,秋收萬顆子。\n‘)f.write(‘四海無閑田,農夫猶餓死。‘)f.close()

運行,建立了一個檔案“file_w”(本地沒有該檔案)

如果檔案存在的話

# -*- coding:utf-8 -*-__author__ = "MuT6 Sch01aR"f = open(file=‘file_w‘, mode=‘w‘)f.write(‘test‘)f.close()

運行結果

之前的內容被新的內容覆蓋了

還有一個 writelines() 方法,可以寫入一個序列

# -*- coding:utf-8 -*-__author__ = "MuT6 Sch01aR"f = open(file=‘file_w‘, mode=‘w‘)f.writelines(["春種一粒粟,", "秋收萬顆子。\n"])f.writelines(("四海無閑田,", "農夫猶餓死。\n"))f.writelines({"鋤禾日當午,", "汗滴禾下土。\n"})f.writelines("誰知盤中餐,粒粒皆辛苦。")f.close()

運行結果

用逗號隔開的各個元素進行拼接

a:追加模式,只能寫不能讀,不會建立新檔案,不會覆蓋原檔案,在原檔案後追加內容

# -*- coding:utf-8 -*-__author__ = "MuT6 Sch01aR"f = open(file="file_w", mode=‘a‘)f.write(‘\nThis is a test‘)f.close()

運行結果

追加模式寫的方法和唯讀模式用的方法一樣,只不過追加模式是在原檔案末尾新增內容

rb:唯讀二進位模式

# -*- coding:utf-8 -*-__author__ = "MuT6 Sch01aR"f = open(file=‘file_test‘, mode=‘rb‘)fr = f.read()print(fr)f.close()

運行結果

wb:唯寫二進位模式

# -*- coding:utf-8 -*-__author__ = "MuT6 Sch01aR"f = open(file=‘file_w‘, mode=‘wb‘)f.write(‘春種一粒粟,秋收萬顆子。\n‘.encode())f.write(b‘This is a test‘)f.close()

運行結果

wb 也可以用來寫入圖片檔案、音頻檔案等

ab:追加二進位模式

# -*- coding:utf-8 -*-__author__ = "MuT6 Sch01aR"f = open(file="file_w", mode=‘ab‘)f.write(‘\nThis is from append1\n‘.encode())f.write(b‘This is from append2‘)f.close()

運行結果

r+:讀寫入模式,既可讀,也可以寫(讀模式支援寫)

# -*- coding:utf-8 -*-__author__ = "MuT6 Sch01aR"f = open(file=‘file_test‘, mode=‘r+‘)fr = f.read()print(fr)f.write(‘From Writing‘)fr1 = f.read()print(fr1)f.close()

運行結果

寫入的內容

後來寫進去的那句話並沒有被讀出來

w+:寫讀模式,既可寫,也可以讀(寫入模式支援讀)

# -*- coding:utf-8 -*-__author__ = "MuT6 Sch01aR"f = open(file=‘file_w‘, mode=‘w+‘)print(f.read())f.write(‘四海無閑田,‘)f.write(‘農夫猶餓死。‘)print(f.read())f.close()

運行結果

讀出的內容是空的

寫入的內容

原來的內容被覆蓋了

a+:可讀追加模式

# -*- coding:utf-8 -*-__author__ = "MuT6 Sch01aR"f = open(file="file_w", mode=‘a+‘)print(f.read())f.write(‘\nThis is from append1\n‘)f.write(‘This is from append2‘)print(f.read())f.close()

運行結果

寫入的內容

 

Python - 檔案讀寫

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.