1. 程式人生 > >Python學習-文件操作

Python學習-文件操作

code see ref 字符 pri lines 清空 文件的 末尾

使用open函數創建文件對象, 然後就可以使用文件對象(file)常用的函數.

例: f = open(‘/path/to/targetfile/test.txt‘, mode=‘r‘, encoding=‘utf-8‘)

open函數參數說明:

  第一個位置: 文件名稱

  第二個位置: mode 值, 決定了打開文件的模式: 只讀(r), 只寫(w), 追加(a)等. 默認為只讀

  第三個位置: encoding 值, 讀取的文件是用什麽編碼格式, 此處就用什麽編碼格式, 與讀取文件一致即可

文件對象常用的函數

序號函數描述
1 file.read([size]) 從文件讀取指定的字符數, 如果未指定size, 則讀取文件中的所有內容
2 file.write(str) 將字符串寫入文件, 返回的是寫入的字符串的長度
3 file.close() 關閉文件對象
4 file.flush() 刷新文件內部緩沖, 直接把內部緩沖區的數據立刻寫入文件
5 file.readline() 讀取文件的一行, 包括換行符‘\n‘
6 file.readlines() 一次性讀取文件的所有行, 返回一個列表, 列表中的單個元素是文件的單行的內容
7 file.seek(offset[,where]) 移動文件讀取指針的位置<br />參數: <br />offset - 偏移量(單位: 字節)<br />where - 可選(3個值: 0 從文件開頭偏移 1 從當前位置偏移 2 從文件末尾偏移)
8 file.truncate([size]) 截斷<br />參數: size 指定時, 從文件開頭階段size個字節<br />size 未指定, 從當前位置截斷至文件末尾, 當前位置值末尾內容被刪除

不同模式打開文件的完全列表

模式描述
r 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。
rb 以二進制格式打開一個文件用於只讀。文件指針將會放在文件的開頭。這是默認模式。一般用於非文本文件如圖片等。
r+ 打開一個文件用於讀寫。文件指針將會放在文件的開頭。
rb+ 以二進制格式打開一個文件用於讀寫。文件指針將會放在文件的開頭。一般用於非文本文件如圖片等。
w 打開一個文件只用於寫入。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。
wb 以二進制格式打開一個文件只用於寫入。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。一般用於非文本文件如圖片等。
w+ 打開一個文件用於讀寫。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。
wb+ 以二進制格式打開一個文件用於讀寫。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。一般用於非文本文件如圖片等。
a 打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。
ab 以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。
a+ 打開一個文件用於讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用於讀寫。
ab+ 以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創建新文件用於讀寫。

在存儲圖片, 視頻時指定二進制模式, 在做爬取存儲圖片時, 經常使用‘wb‘模式.

代碼實例:

# 有testfile.txt, 內容為

我愛你中國
心愛的母親
我為你流淚
也為你自豪

1. 讀取文件

# 讀取所有內容, 然後輸出
f = open(testfile.txt, mode=r, encoding=utf-8) content = f.read() print(content) f.close()
# 一次讀取所有行的內容, 遍歷輸出
f = open(testfile.txt, mode=r, encoding=utf-8)
file_lines = f.readlines()
for line in file_lines:
    print(line, end=‘‘)
f.close()
# 讀取指定字符數
f = open(testfile.txt, mode=r, encoding=utf-8)
s = f.read(3)  # 註意此處是指字符數, 不是字節數, 如果代表字節數, utf-8編碼一個中文占3個字節, 那麽輸出結果就應該為 ‘我‘
print(s)
f.close()

# 輸出結果
我愛你

2. 寫入文件

# 清空原有內容寫入
f = open(testfile.txt, mode=w, encoding=utf-8)
f.write(真的很自豪)
f.flush()
f.close()

# 追加寫入
f = open(testfile.txt, mode=a, encoding=utf-8)
f.write(真的真的很自豪\n)
f.close()

3. 操作文件的指針

# 操控文件讀取指針位置
f = open(testfile.txt, r)
f.seek(3)   # 讀取指針右移3個字節
print(f.read(2))  # 讀取2個字符

f.seek(6)
print(f.read(1))

f.seek(3, 0)  # 讀取指針從文件開頭右移3個字節

print(f.read(1))
print(f.tell())  # 返回文件指針的當前位置

# f.seek(3,1)
print(f.readline())
# print(f.read())
f.close()

# 輸出結果
愛你
你
愛
6
你中國

Python學習-文件操作