進階第十八顆 Python對文件的操作
在Windows中,我們可以很容易地創建、修改和刪除文件。我們熟悉的文件類型也有很多:txt、mkv、mp3、docx...
在Python中,我們依舊可以執行創建、修改和刪除文件的操作。下面一起來看:
1、示例
我們可以先在python.exe所在目錄,我的目錄是C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32,新建一個txt文檔,寫入一些內容。
file=open("sample111.txt",‘r‘) lines=file.readlines() for line in lines: print(line) file.close()
看一下執行的結果:
>>> import readline 11111111111 22222222222 33333333333 44444444444 55555555555
我的txt文檔,文件名是sample111,後綴是txt。內容有5行。
2、分析一下
2.1 格式
打開文件,就要關閉文件。所以可以看到有open,最後就要加上close。
file=open(‘a‘,‘b‘)。其中a是一個包含文檔路徑的文件名;b是打開文件時附帶的指令,具體見下表:
r | 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。 |
rb | 以二進制格式打開一個文件用於只讀。文件指針將會放在文件的開頭。這是默認模式。 |
r+ | 打開一個文件用於讀寫。文件指針將會放在文件的開頭。 |
rb+ | 以二進制格式打開一個文件用於讀寫。文件指針將會放在文件的開頭。 |
w | 打開一個文件只用於寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。 |
wb | 以二進制格式打開一個文件只用於寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。 |
w+ | 打開一個文件用於讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。 |
wb+ | 以二進制格式打開一個文件用於讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。 |
a | 打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。 |
ab | 以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。 |
a+ | 打開一個文件用於讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用於讀寫。 |
ab+ | 以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創建新文件用於讀寫。 |
如果只提供了路徑和文檔名,而未提供附帶指令,則默認為‘r‘,也就是只讀。
上述指令列表十分重要,比如‘w‘,會覆蓋現有文件內容,所以使用時一定要當心!!!
3、使用open就要使用對應的close。編碼規模小的時候沒有問題,一旦編碼行暴增會出現忘記關閉的情況,那有沒有不需要使用close的辦法呢。回答是肯定的。
>>> with open(‘sample111.txt‘) as f: for i in f: print(i) 11111111111 22222222222 33333333333 44444444444 55555555555
區別在於,在open之前輸入了一個with,這樣close就不需要我們手動執行。
4、以r模式打開的文檔,可以有幾種方法讀取裏面的內容,分別是readline()、readlines()和read()。大家看一下區別。
先看readline()。sample111.txt文檔中有5行,使用readline只能讀取第一行。
>>> file=open(‘sample111.txt‘,‘r‘) >>> a=file.readline() >>> print(a) 11111111111 >>> print(a) 11111111111 >>> file.close()
再看readlines()。一次性讀取文檔中所有內容,並把內容以列表的形式存儲為一個可叠代對象。
>>> file=open(‘sample111.txt‘,‘r‘) >>> a=file.readlines() >>> print(a) [‘11111111111\n‘, ‘22222222222\n‘, ‘33333333333\n‘, ‘44444444444\n‘, ‘55555555555‘] >>> file.close()
最後看read()
>>> file=open(‘sample111.txt‘,‘r‘) >>> a=file.read() >>> print(a) 11111111111 22222222222 33333333333 44444444444 55555555555 >>> file.close()
進階第十八顆 Python對文件的操作