1. python中常用的檔案操作有open,write,read,readline,readlines,writelines,seek,tell,close等。
open的函數原型為open(name[,mode[,buffering]]),name為檔案的路徑名,常見的mode有’r’ (讀模式),’w’ (寫入模式),’a’追加模式,’b’ ( 二進位模式) ‘+’(可讀可寫入模式),buffering的值設為0,檔案的操作是沒有緩衝的,如果為1,表示有緩衝,讀寫在記憶體中進行然後從緩衝區寫入硬碟,讀寫效率更高。readline為讀取一行,readlines為讀取所有行,writelines向檔案寫入需要加上分行符號。在檔案讀寫完成後,需要調用close函數將檔案關閉。下面檔案讀寫操作的執行個體:有檔案D:\\so.txt,檔案內容是:
Life is too short to wake up in themorning with regrets.
So,
love the people who treat you rightand forget about the ones who do not.
下面是讀文本的方法:
#!/usr/bin/env pythonf=open('D:\\so.txt','r+')#f.write("hello world")for i in range(0,3):printf.readline()f.seek(0)lines=f.readlines()lines.append("\nlife is too short,weneed python")f.seek(0)f.writelines(lines)f.close()for line in open('D:\\so.txt','r+'):printline
在檔案的迭代讀取時,可以不適用變數變數隱藏檔對象,在檔案讀寫結束時也不必適用close關閉檔案對象。
使用with語句,也可以不調用close,因為這種情況下,檔案會自動關閉。如
with open(“D:\\so.txt”) as file:
printfile.readlines()
2. python 提供了shutil模組,它提供了進階檔案操作,如檔案的複製、移動和備份
(1) copyfile(src,dst)函數可以將檔案src複製到dst,src和dst都是字串形式的路徑名,如果src和dst是相同的路徑,則會引發錯誤,如果dst不是可寫的方式開啟的,會引發I/O異常,這個函數不能用於拷貝塊裝置檔案或者管道檔案。將上文中的so.txt拷貝到D:\\sotest.txt,只需調用copyfile(“D:\\so.txt”,”D:sotest.txt”)即可。
(2) 移動檔案可以使用move(src,dst),這裡如果dst是目錄,src檔案會移動到dst目錄下。使用move(“D:\\so.txt”,”E:”),可以將so.txt移動到E盤。
(3) 備份檔案
make_archive(base_name,format[,root_dir])
base_name 是將要建立的檔案名稱(去掉副檔名),format是備份的格式,可以是zip,tar,batar,gztar,root_dir是要備份的檔案,預設是當前的工作目錄
將D:\\sotest備份為myarchive,調用方法為make_archive(“myarchive”,zip,”D:\\sotest”)