文件操作

文件操作

常見的文件類型:

  • 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())
#通過該方法會自動關閉文件
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章