在 Python 中,如果想要操作文件,首先需要創建或者打開指定的文件,並創建一個文件對象,而這些工作可以通過內置的 open() 函數實現。
open() 函數用於創建或打開指定文件,該函數的常用語法格式如下:
file = open(file_name [, mode='r' [ , buffering=-1 [ , encoding = None ]]])
此格式中,用 [] 括起來的部分為可選參數,即可以使用也可以省略。其中,各個參數所代表的含義如下:
file_name:要創建或打開文件的文件名稱,該名稱要用引號(單引號或雙引號都可以)括起來。需要注意的是,如果要打開的文件和當前執行的代碼文件位於同一目錄,則直接寫文件名即可;否則,此參數需要指定打開文件所在的完整路徑。
mode:可選參數,用於指定文件的打開模式。可選的打開模式(如下方表格)所示。如果不寫,則默認以只讀(r)模式打開文件。
buffering:可選參數,用於指定對文件做讀寫操作時,是否使用緩沖區(本節后續會詳細介紹)。
encoding:手動設定打開文件時所使用的編碼格式,不同平台的 ecoding 參數值也不同,以 Windows 為例,其默認為 cp936(實際上就是 GBK 編碼)。
open() 函數支持的文件打開模式如下:
模式 | 描述 |
r | 只讀模式打開文件,讀文件內容的指針會放在文件的開頭。 |
rb | 以二進制格式、采用只讀模式打開文件,讀文件內容的指針位於文件的開頭,一般用於非文本文件,如圖片文件、音頻文件等。 |
r+ | 打開文件后,既可以從頭讀取文件內容,也可以從開頭向文件中寫入新的內容,寫入的新內容會覆蓋文件中等長度的原有內容。 |
rb+ | 以二進制格式、采用讀寫模式打開文件,讀寫文件的指針會放在文件的開頭,通常針對非文本文件(如音頻文件)。 |
w | 以只寫模式打開文件,若該文件存在,打開時會清空文件中原有的內容。 |
wb | 以二進制格式、只寫模式打開文件,一般用於非文本文件(如音頻文件) |
w+ | 打開文件后,會對原有內容進行清空,並對該文件有讀寫權限。 |
wb+ | 以二進制格式、讀寫模式打開文件,一般用於非文本文件 |
a | 以追加模式打開一個文件,對文件只有寫入權限,如果文件已經存在,文件指針將放在文件的末尾(即新寫入內容會位於已有內容之后);反之,則會創建新文件。 |
ab | 以二進制格式打開文件,並采用追加模式,對文件只有寫權限。如果該文件已存在,文件指針位於文件末尾(新寫入文件會位於已有內容之后);反之,則創建新文件。 |
a+ | 以讀寫模式打開文件;如果文件存在,文件指針放在文件的末尾(新寫入文件會位於已有內容之后);反之,則創建新文件。 |
ab+ | 以二進制模式打開文件,並采用追加模式,對文件具有讀寫權限,如果文件存在,則文件指針位於文件的末尾(新寫入文件會位於已有內容之后);反之,則創建新文件。 |
一、創建文件
file = open('hello.txt','w')
運行結果會在當前執行腳本的目錄下會創建一個hello.txt文件。
二、寫入文件
file = open('hello.txt','w') print(file.write('碼農博客\n')) # .write()方法是往文件里寫入內容 file.close() # .close()方法是將文件關閉
運行結果:
5
運行結果的5是告訴我們一共寫入了5個字符。但是你打開文件看會出現亂碼,這要怎么解決呢?
file = open('hello.txt','w',encoding='utf-8') # 將編碼設定成utf-8編碼 print(file.write('碼農博客\n')) file.close()
這個時候你再打開文件,顯示就是正常的。
三、讀取文件
讀取文件中的全部內容
file = open('hello.txt','r',encoding='utf8') print(file.read()) # read方法是讀取文件中全部內容
運行結果:
碼農博客
逐行讀取文件的內容
file = open('hello.txt','r',encoding='utf8') print(file.readline()) # readline方法是逐行讀取文件中的內容
運行結果:
碼農博客
如果要打印第二行內容的話,那就再寫一次“print(file.readline())”。
讀取文件中全部內容並返回成列表
file = open('hello.txt','r',encoding='utf8') print(file.readlines()) # readlines方法是讀取文件中所有內容,返回一個列表,並將每行內容當成列表中的一個元素
運行結果:
['碼農博客\n']
四、with上下文
如果怕文件打開后忘記關閉,可以使用with上下文,再執行完with下的代碼之后,文件會自動關閉。
with open('hello.txt','r',encoding='utf8') as f: # as是給文件臨時取名叫f print(f.readlines())
運行結果:
['碼農博客\n']
本文轉自:https://www.myblou.com/archives/1446