1.open()各模式詳情
'r' 以隻讀模式打開,沒有write()方法,預設打開方式
'w' 以隻寫模式打開,檔案不存在時會自動建立檔案,檔案已存在時會清除檔案内容并重建檔案。這種模式打開的檔案沒有read()方法。
'a' 以追加模式打開,有write()方法,檔案不存在時會自動建立檔案,寫入時隻能寫到檔案末尾,打開的檔案沒有read()方法
'r+' 'w+' 'a+'是讀寫模式,其他類似'r' 'w' 'a'
2. 常見檔案操作函數/方法
txt.read([size]) #size為讀取的長度,以byte為機關;若省略,預設全部讀取
txt.readline([size]) #讀取一行。如果定義了size,則size表示讀取内容的總長度;size大小超過該行長度,讀取一行
txt.readlines([size]) #把檔案每一行作為一個list的一個成員,并傳回這個list。如果提供size,則size表示讀取内容的總長度,可能隻讀取檔案的一部分。
txt.write("Something you want to type in.") #把一個字元串寫到檔案中。字元串不會自動加換行符
txt.close() #關閉檔案,檔案使用完畢後要記得及時關閉
txt.tell() #傳回檔案操作标記的目前位置,以檔案開頭為原點
txt.next() #傳回下一行,并将檔案操作标記移至下一行
txt.seek(offset[,whence]) #将檔案操作标記移到offset處。未提供whence參數時,offset一般相對于檔案開頭來計算,為正數。如果提供了whence參數的話,whence為0則從頭開始計算;whence為1表示以目前位置為原點開始計算;whence為2表示以檔案末尾為原點開始計算
3.檔案和檔案夾操作
Python中對檔案、檔案夾的操作需涉及到os子產品和shutil子產品
(1)删除一個檔案:os.remove("file")
os.remove("test.txt") #删除目前目錄下test.txt檔案
(2)重命名:os.rename(old,new),檔案或目錄均使用此指令
os.rename(r'e:\pythoncoding\test\test.txt',r'e:\pythoncoding\test\test1.txt') #将e:\pythoncoding\test\test.txt檔案重命名為test1.txt
os.rename(r'e:\pythoncoding\test',r'e:\pythoncoding\test1') #将test檔案夾重命名為test1
(3)傳回指定目錄下的所有檔案和目錄名:os.listdir()
for i in os.listdir(os.getcwd()):
print i # 列印出目前工作目錄所有檔案和檔案夾名
(4)得到目前工作目錄,即目前Python腳本工作的目錄路徑: os.getcwd()
(5)建立多級目錄:os.makedirs(r"c:\python\test")
建立單個目錄:os.mkdir("test")
os.makedirs(r"e:\test\test") #建立test檔案夾,若其父目錄不存在則自動建立
os.mkdir(r"e:\test\test") #建立test檔案夾,若其父目錄不存在則抛出異常
(6)删除目錄: os.rmdir()
删除多級目錄:os.removedirs(r"c:\test\test")
os.removedirs(r"c:\test\test")
#删除目錄及父目錄。先删除C:\test\test目錄,然後删除C:\test和c:目錄。如果有非空子目錄不能删除,會抛出異常
(7)①去掉目錄路徑,傳回檔案名:os.path.basename()

②去掉檔案名,傳回目錄:os.path.dirname()
③os.path.join():将路徑名和檔案名組合起來
④os.path.split():傳回目錄路徑和檔案名組成的元組
⑤os.path.splitdrive():傳回驅動器目錄和剩餘的路徑名組成的元組
⑥os.path.splitext():傳回檔案名和檔案擴充名組成的元組
(8)獲得資訊相關函數
os.path.getatime():傳回最近通路時間
os.path.getctime():傳回檔案建立時間
os.path.getmtime():傳回檔案最近修改時間
os.path.getsize():傳回檔案大小(位元組機關)
(9)邏輯判斷相關函數
os.path.exists():判斷檔案或目錄是否存在,存在傳回True,否則傳回False
os.path.isabs():判斷路徑是否為絕對路徑,是則傳回為True,否則傳回False
os.path.isdir():判斷指定路徑是否存在且為目錄,若是則傳回True,否則傳回False
os.path.isfile():判斷指定路徑是否存在且為檔案,若是則傳回True,否則傳回False
os.path.islink():判斷指定路徑是否存在且為一個符号連結,若是則傳回True,否則傳回False
os.path.ismount():判斷指定路徑是否存在且為一個挂載點,若是則傳回True,否則傳回False
(10)訓示你正在使用的平台:os.name 對于Windows,它是'nt',而對于Linux/Unix使用者,它是'posix'
>>> os.name
'nt'
(11)複制檔案:
①shutil.copyfile("oldfile","newfile"):兩個參數都隻能是檔案,相當于把oldfile複制到newfile
>>> import shutil
>>> shutil.copyfile(r"E:\Code\CPP\test1.txt",r"E:\Code\CPP\test2.txt")
②shutil.copy("oldfile","newfile"):oldfile隻能是檔案,newfile可以是檔案,也可以是目标目錄。newfile為檔案時,和copyfile()作用相同;為目錄時,則把oldfile複制到新目錄
>>> shutil.copy(r"E:\Code\CPP\test1.txt",r"E:\Code\CPP\test2.txt")
>>> shutil.copy(r"E:\Code\CPP\test1.txt",r"E:\Code\CPP\test")
(12)複制檔案夾:
shutil.copytree("olddir","newdir"):olddir和newdir都隻能是目錄,且newdir必須不存在。此指令把olddir中的檔案全部複制到newdir中。
>>> shutil.copytree(r"E:\Code\CPP\test1",r"E:\Code\CPP\test2")
(13)移動檔案(目錄)
shutil.move("oldpos","newpos"):移動檔案或目錄。第一個參數可以為檔案或目錄。第一個參數為目錄時,第二個參數必須為目錄;第一個參數為檔案時,第二個參數為目錄、檔案均可。
>>> # 兩個參數均為檔案,将檔案1的内容剪切到檔案2,然後删除檔案1
...
>>> shutil.move(r"E:\Code\CPP\test1.txt",r"E:\Code\CPP\test2.txt")
>>>
>>> # 第一個參數為檔案,第二個參數為目錄,則将檔案1剪切到目錄2
...
>>> shutil.move(r"E:\Code\CPP\test1.txt",r"E:\Code\CPP\test1")
>>>
>>> # 兩個參數均為目錄,則将第一個目錄的所有檔案剪切到第二個目錄,并删除目錄1
...
>>> shutil.move(r"E:\Code\CPP\test1",r"E:\Code\CPP\test2")
shutil.rmtree("dir"):删除目錄,空目錄、非空目錄均可删除