Python中open函數怎么操作文件


在 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






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM