1. 程式人生 > >進階第十八顆 Python對文件的操作

進階第十八顆 Python對文件的操作

appdata ren 文檔 只讀 路徑和 users python admin 分別是

在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對文件的操作