python入門系列:文件操作
r
"""
以只讀方式打開文件(默認),文件的指針會放在文件的開頭
若文件不存在,會報錯
"""
f = open("a.txt", "r") # 在同級目錄下打開文件
content = f.read()
print(content)
w
"""
以只寫方式打開文件,文件的指針也在文件開頭,進行覆蓋寫入(先清空後寫入)
若文件不存在,會創建一個新的文件
"""
f = open("a.txt", "w")
f.write("66666")
與 w唯一不同的是,文件的指針會放在文件的末尾
增加b操作
"""
以二進制的方式進行文件操作 rb, wb, ab
將一張圖片的一半內容寫入到另外一個圖片中
第二章圖片可以打開瀏覽,是只有第一張一半的內容,還是圖片質量下降呢?大家可以試一下
"""
fromFile = open("pic.jpg", "rb")
content = fromFile.read()
fromFile.close()
writeLen = len(conten) // 2
toFile = open("pic2.jpg", "wb")
toFile.close()
文件指針的定位
"""
seek(offset, whence=0)
whence表示指定文件指針所在的位置
whence=0:文件開始處,offset >= 0
whence=1:當前的位置,offset is free
whence=2:文件結尾處,offset <= 0
但是對於不帶 b的文件操作,whence只能為 0
"""
f = open("a.txt", "r") # 當前文件內容:12345678
print(f.tell()) # 獲得當前文件指針的位置 0
print(f.tell()) # 2
print(f.read()) # 345678
print(f.tell()) # 8
文件讀操作
f.read(length):
length默認是文件所有內容的長度,文件指針自動向後移動
f = open("a.txt", "r") # 文件內容:12345
content = f.read(2)
print(content) # 12
print(f.tell()) # 4
readline(limit):
讀取一行數據,會讀入文件中的換行符
limit:限制的最大字符數
f = open("a.txt", "r") # 文件內容:123
456
print(f.readline(), end=‘‘) # 123
print(f.readline(), end=‘‘) # 456
readlines():
按照換行符對文件內容進行處理,處理好的每一行組成一個列表返回
f = open("a.txt", "r") # 文件內容:123
456
printf(f.readlines()) # [‘123
‘, ‘456
‘]
遍歷
直接遍歷文件
f = open("a.txt", "r")
for i in f:
print(i, end=‘‘)
遍歷 readlines()的結果
lines = f.readlines()
for line in f:
print(line, end=‘‘)
文件關閉
釋放系統資源
將內存緩沖區中的內容同步到磁盤中
文件寫入內容時,並不是立即寫入到磁盤文件,而是在對應的內存緩沖區做修改,當文件關閉時,再一次性將這些修改拷貝到磁盤。
f.flush() 可以強制刷新內容到磁盤。
其他操作
依賴於os模塊
重命名
import os
os.rename("b.txt", "a.txt") # 更改文件名稱
os.rename("dir1", "dir2") # 更改目錄名稱
刪除
import os
os.remove("b.txt") # 刪除 b.txt
os.rmdir("dir1/dir2") # 刪除了 dir2目錄,若目錄不為空,則無法刪除
os.rmdirs("dir1/dir2") # 遞歸刪除,若dir1為空,也刪除
創建目錄
import os
mkdir(path, mode) # mode=0o777 //權限設定方式參照 Linux
os.mkdir("dir1") # 一次只能創建一個目錄,不能遞歸創建多個目錄
路徑相關操作
os.getcwd() 獲得當前的目錄
os.chdir() 改變當前所在路徑
os.listdir() 獲得目錄下文件列表
文件相關案例
文件復制
import os
只讀模式,打開要復制的文件
追加模式,打開副本文件
scr_file = open("d.txt", "r", encoding="utf-8")
obj_file = open("d_copy.txt", "w", encoding="utf-8")
從源文件中讀取內容,寫入到目標文件
while True:
content = scr_file.read(1024) # 如果文件過大,分塊寫入
if not content:
break
else:
obj_file.write(content)
關閉源文件和目標文件
scr_file.close()
obj_file.close()
文件分類,生成文件清單
import os
file_list = os.listdir(".")
res = {}
for file in file_list:
if "." not in file: # 排除掉目錄
continue
appendix = file.split(".")[-1] # 獲得擴展名
if appendix not in res:
res[appendix] = []
res[appendix].append(file)
print(res)
註:喜歡python + qun:839383765 可以獲取Python各類免費最新入門學習資料!
python入門系列:文件操作