文件操作
常見的文件類型:
- txt
- csv
- json
- html
- mp4
文件操作的流程:
- 打開—>open()
- 讀寫—>read()/write()
- 關閉—>close()
序號 | 用途 | 方法 | 功能 |
---|---|---|---|
1 | 打開/關閉文件 | f=open(file) | 打開文件 |
2 | f.close() | 關閉文件 | |
3 | 讀寫文件內容 | r.read([size]) | 從文件中讀取指定的字節數;若未指定,讀取所有。 |
4 | f.readline([size]) | 讀取整行,包括"\n" | |
5 | f.readlines([size]) | 讀取所有行,並返回列表; | |
6 | f.write(str) | 將字符串寫入文件,並返回字符串長度 | |
7 | f.writelines(seq) | 向文件寫入一個序列字符串列表。如果需要換行,需要自己加入換行符。 | |
8 | f.flush() | 刷新文件緩存,直接把內部緩存的數據寫入文件 | |
9 | 文件的定位 | f.seek(offset) | 設置文件的當前位置,即指針位置 |
10 | f.tell() | 返回文件的當前位置,即指針位置 |
文件的打開與關閉
內置函數:open(),創建一個file對象,之後纔可以用它調用相關的方法。
語法格式:
file_object = open(file, [,mode], [,endcoding="utf-8", [buffering]])
解釋:
-
file_object —> open()返回的文件對象
-
file —> 要打開的文件
-
mode —> 指定模式:只讀,寫入,追加等等。一般默認爲只讀。
模式 | 描述 |
---|---|
r | 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。 |
rb | 以二進制格式打開一個文件用於只讀。文件指針將會放在文件的開頭。這是默認模式。 |
r+ | 打開一個文件用於讀寫。文件指針將會放在文件的開頭。 |
rb+ | 以二進制格式打開一個文件用於讀寫。文件指針將會放在文件的開頭。 |
w | 打開一個文件只用於寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。 |
wb | 以二進制格式打開一個文件只用於寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。 |
w+ | 打開一個文件用於讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。 |
wb+ | 以二進制格式打開一個文件用於讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。 |
a | 打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。 |
ab | 以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。 |
a+ | 打開一個文件用於讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用於讀寫。 |
ab+ | 以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創建新文件用於讀寫。 |
- encoding —> 指定文件編碼,usually,“utf-8”/“GBK”
- buffering ----> 若設置爲0,不會有寄存;設爲1,訪問文件時會寄存行;設爲大於1的數,表明是寄存區的緩存大小;設爲負數,則寄存區的緩衝區大小爲系統默認。
文件對象的屬性:
屬性 | 描述 |
---|---|
f.name | 返回文件的名稱 |
f.mode | 返回打開文件的訪問模式 |
f.closed | 如果文件已關閉,返回true;否則,false |
關閉:
f.close()
節省計算機資源和提供性能,使用完文件之後,關閉它。
文件的讀寫:
讀
- f.read([size])
- 從文件指針處讀取。
- 傳遞size,指定讀取的字節數。
f = open('./data/GreenFlowerPorcelain.txt', 'r')
for i in f:
print(i.strip())
f.close()
# 讀取進來的每一句自帶換行,通過strip()方法去除換行符
- f.readline()
- 默認讀取一行
- 輸入參數讀取指定字節數和read()相似
f = open('./data/GreenFlowerPorcelain.txt', 'r')
print(f.readline())
# 1 Green Flower Porcelain
print(f.readline(5))
# 2 Yo
f.close()
- f.readlines()
- 讀取文件組成列表
f = open('./data/GreenFlowerPorcelain.txt', 'r')
print(f.readlines())
#[' 1 Green Flower Porcelain\n', ' 2 You are the face that has changed my whole world.\n', ' 3 You are the face that I see everywhere I go.\n', " 4 You are so beautiful to me that I can't explain ,\n", ' 5 Just like a green flower porcelain.\n', " 6 You're like a moon that I awaken to say hello,\n", ' 7 So beautiful and bright that you make me content to play it so.\n', ' 8 I see your face on the leaves,telling me how lonely I have been.\n', ' 9 This is a dream of mine that I have just dreamed.\n', '10 Just see your smiling face everywhere I go.\n', '11 The love I feel for you to shine inside me.\n', "12 But it's all over now you're gone."]
f.close()
寫
- f.write()
f = open('./data/zucc.txt', 'w')
f.write("zucc")
f.close()
#w模式會覆蓋原本存在的文件
- f.writelines()
f = open('./data/zucc.txt', 'w')
seq = ["zucc", "love", "me"]
f.writelines('\n'.join(seq))
f.close()
#可以將整個列表寫入文件,但不會有分隔符,需手動添加
定位讀取
f.tell()
- 獲取文件的當前位置
f = open('./data/GreenFlowerPorcelain.txt', 'r')
f.read(10)
print(f.tell())
#10
f.close()
f.seek()
- seek(offet[,from])
- offset,要移動的字節數
- form,指定偏移的參考位置
- 0—>從開頭偏移
- 1—>從當前位置偏移
- 2—>從末尾偏移
f = open('./data/GreenFlowerPorcelain.txt', 'r')
print(f.read(20))
print(f.tell())
f.seek(0, 0)
print(f.read(20))
f.close()
# 1 Green Flower Porc
#20
# 1 Green Flower Porc
with as :
with open('./data/GreenFlowerPorcelain.txt', 'r') as f:
print(f.read())
#通過該方法會自動關閉文件