文件處理與郵件自動化
1.標(biāo)準(zhǔn)庫OS
os常用的操作函數(shù)如下圖
1.路徑操作
os.path.relpath(path,start):返回從start路徑到path的相對路徑的字符串欲侮。如果沒提供start,就使用當(dāng)前工作目錄作為開始路徑。
os.path.dirname(path): 返回當(dāng)前路徑的目錄名稱涩馆。
os.path.basename(path):返回當(dāng)前路徑的文件名稱
如果同時需要一個路徑的目錄名稱和基本名稱莫瞬,可以調(diào)用os.path.split()疾嗅,獲得者兩個字符串的元組黍衙。
2.路徑有效性檢查
如果提供的路徑不存在珠十,很多Python函數(shù)就會崩潰并報錯料扰。os.path模塊提供了一些函數(shù),用于檢測給定的路徑是否存在焙蹭,以及判定是文件還是文件夾晒杈。
os.path.exists(path):如果path參數(shù)所指的==文件或文件==夾存在,則返回True,否則返回False孔厉。
os.path.isfile(path):如果path參數(shù)存在拯钻,并且是一個==文件==帖努,則返回True,否則返回False。
os.path.isdir(path):如果path參數(shù)存在粪般,并且是一個==文件夾==拼余,則返回True,否則返回False。
3.文件及文件夾操作用os.makedirs()創(chuàng)建新文件夾
os.path.getsize(path):返回path參數(shù)中文件的字節(jié)數(shù)亩歹。
os.listdir(path):返回文件名字符串的列表匙监,包含path參數(shù)中的每個文件。
如果想知道目錄下所有文件的總字節(jié)數(shù)小作,可以同時使用 os.path.getsize() 和 os.listdir()
2.文件讀寫
文件對象可以通過Python內(nèi)置的open函數(shù)得到亭姥,完整的語法如下。
open(file,mode=r',buffering=-1,encoding=None,errors=None,newline=None,closefd=True,opener=None)
open函數(shù)有8個參數(shù)顾稀,常用前4個致份,除了file參數(shù)外,其他參數(shù)都有默認(rèn)值础拨。file指定了要打開的文件名稱氮块,應(yīng)包含文件路徑,不寫路徑則表示文件和當(dāng)前py腳本在同一個文件夾诡宗。buffering用于指定打開文件所用的緩沖方式滔蝉,默認(rèn)值-1表示使用系統(tǒng)默認(rèn)的緩沖機(jī)制。文件讀寫要與硬盤交互塔沃,設(shè)置緩沖區(qū)的目的是減少CPU操作磁盤的次數(shù)蝠引,延長硬盤使用壽命。encoding用于指定文件的編碼方式蛀柴,如GBK螃概、UTF-8等,默認(rèn)采用UTF-8鸽疾,有時候打開一個文件全是亂碼,這是因為編碼參數(shù)和創(chuàng)建文件時采用的編碼方式不一樣制肮。
mode指定了文件的打開模式冒窍。打開文件的基本模式包括r、w豺鼻、a综液,對應(yīng)讀、寫儒飒、追加寫入谬莹。附加模式包括b、t、+附帽,表示二進(jìn)制模式埠戳、文本模式、讀寫模式士葫,附加模式需要和基本模式組合才能使用乞而,如“rb”表示以二進(jìn)制只讀模式打開文件送悔,“rb+”表示以二進(jìn)制讀寫模式打開文件慢显。
要注意的是,凡是帶w的模式欠啤,操作時都要非常謹(jǐn)慎荚藻,它首先會清空原文件,但不會有提示洁段。凡是帶r的文件必須先存在应狱,否則會因找不到文件而報錯
讀取文件
有了File對象,我們就可以開始從它讀取內(nèi)容祠丝。
read():以原格式返回全部文本
readline(): 只返回第一行文本
readlines(): 以列表的格式返回全部文本疾呻,文本的第幾行對應(yīng)列表的第幾個元素
寫入文件
需要用“寫模式”‘w’和“添加模式”'a'打開一個文件,而不能用讀模式打開文件写半。
“寫模式”將覆寫原有的文件岸蜗,從頭開始〉“添加模式”將在已有文件的末尾添加文本
baconFile = open('bacon.txt','w')
baconFile.write('Hello world!\n')
baconFile.close() #注意璃岳,關(guān)閉后,才能完成寫入悔捶,從txt文件中看到寫入的內(nèi)容铃慷。
baconFile = open('bacon.txt','a')
baconFile.write('Bacon is not a vegetable.')
baconFile.close() #注意局装,關(guān)閉后殃饿,才能完成寫入,從txt文件中看到寫入的內(nèi)容圾笨。
【案例】統(tǒng)計字母出現(xiàn)頻率
from collections import Counter
my_list = []
punctuation=',.!?\堂淡,赁温。!淤齐?股囊、()【】<>《》=:+-*“”...\n'
with open('bacon.txt','r') as f:
for line in f:
for word in line:
if word not in punctuation:
my_list.append(word)
counter = Counter(my_list)
counter
3.組織文件
shutil模塊
shutil(或稱為shell工具)模塊中包含一些函數(shù),可以在Python程序中復(fù)制更啄、移動稚疹、改名和刪除文件。要使用shutil的函數(shù),首先需要import shutil
[圖片上傳失敗...(image-2d1b98-1657719038166)]
4.壓縮文件
zipfile.ZipFile('filename.zip', 'w') :以寫模式創(chuàng)建一個壓縮文件
5.文件查找模塊
- glob
- fnmatch
- hashlib
-
6.自動發(fā)送郵件