1. 程式人生 > >python入門系列:文件操作

python入門系列:文件操作

刪除 文件寫入 不同的 文件操作 不同 相關 chdir 分塊 enc

操作模式

r

"""
以只讀方式打開文件(默認),文件的指針會放在文件的開頭
若文件不存在,會報錯
"""
f = open("a.txt", "r") # 在同級目錄下打開文件
content = f.read()
print(content)
w

"""
以只寫方式打開文件,文件的指針也在文件開頭,進行覆蓋寫入(先清空後寫入)
若文件不存在,會創建一個新的文件
"""
f = open("a.txt", "w")
f.write("66666")

a

與 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.write(content[0:writeLen])
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

f.seek(2) # 向後移動兩個單位
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入門系列:文件操作