python組織文件知識點

9、組織文件


shutil模塊:




9.1複製文件和文件夾


調用shutil.copy(source,destination)函數,將路徑source出的文件複製到路徑destination處的文件夾,如果destination是一個文件名,他將作爲被複制的文件的新名字。


該函數返回一個字符串,表示被複制文件的路徑




>>> import shutil
>>> shutil.copy('C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\4.bat','C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\quiz')
'C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\quiz\\4.bat'




shutil.copy(source,destination)複製一個文件,而shutil.copytree(source,destination)將複製整個文件夾,以及它包含的文件夾和文件;將路徑source出的文件夾以及它的所有文件和子文件夾
複製到路徑destination處的文件夾,如果destination是一個文件名,他將作爲被複制的文件的新名字。


該函數返回一個字符串,表示被複制文件的路徑


>>> shutil.copytree('C:\\Users\\Nick\\Desktop\\Appium','C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\quiz\\1')
'C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\quiz\\1'








9.2文件和文件夾的移動與改名


調用shutil.move(source,destination)函數,將路徑source出的文件移動到路徑destination,並返回新位置的絕對路徑的字符串


如果destination指向一個文件夾,source文件將移動到destination中,並保持原來的文件名,如果destination中存在相同文件名,move方法將會覆寫該文件


>>> shutil.move('C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\quiz\\1\\appium-1.6.4-beta.zip','C:\\Users\\Nick\\Desktop\\python\\drawing\\2')
'C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\appium-1.6.4-beta.zip'


文件和文件夾改名:
>>> shutil.move('C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\quiz\\1\\android-sdk-windows.zip','C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\111.zip')
'C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\111.zip'


9.3永久刪除文件和文件夾


利用os模塊中的函數可以刪除一個文件或一個空文件夾,但是利用shutil模塊,可以刪除一個文件夾及其所有內容


調用os.unlink(path)將刪除path處的文件


調用os.rmdir(path)將刪除path處的文件夾,但是該文件夾必須爲空,其中沒有任何文件和文件夾


調用shutil.rmtree(path)將刪除path處的文件夾,它包含所有文件和文件夾都會被刪除




利用send2trash模塊安全刪除文件和文件夾,它會將文件和文件夾發送到計算機的回收站,可以恢復


>>> import send2trash
>>> send2trash.send2trash('C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\111.zip')




9.4遍歷目錄樹


os.walk()函數被傳入一個字符串值,即一個文件夾的路徑,可以在for循環中使用os.walk()函數,
os.walk()函數在每一次循環迭代中,返回三個值


1、當前文件夾名稱的字符串
2、當前文件夾中子文件的字符串的列表
3、當前文件夾中文件的字符串的列表




rootdir = r"C:\Users\Nick\Desktop\python\drawing\2"         # 指明被遍歷的文件夾
addrList = []
addrListTxt = []
#循環遍歷文件夾,並將完整路徑存儲在列表addrList中
for parent,dirnames,filenames in os.walk(rootdir):  #三個參數:分別返回1.父目錄 2.所有文件夾名字(不含路徑) 3.所有文件名字
    for dirname in  dirnames:                       
        print("parent is:" + parent)                 #輸出文件夾信息
        print("dirname is:" + dirname) 
    for filename in filenames:
        print("parent is:" + parent)
        print("filename is:" + filename)               #輸出文件信息
        print("the full name of the file is:" + os.path.join(parent,filename)) #輸出文件路徑信息
        
        addrList.append(os.path.join(parent,filename))








9.5用zipfile模塊壓縮文件




利用zipfile模塊中的函數可以創建和打開zip文件


讀取zip文件


首先必須創建一個ZipFile對象,要創建一個ZipFile對象,就調用zipfile.ZipFile()函數即可,向他傳入一個字符串,表示.zip文件的文件名


ZipFile對象有一個namelist()方法,返回zip文件中包含所有文件和文件夾的字符串列表,這些字符串可以傳遞給ZipFile對象的getinfo()方法,返回一個關於特定文件的ZipFile對象


ZipFile對象有自己的屬性,諸如表示字節數的file_size和compress_size,它們分別表示原來文件大小的壓縮後文件的大小;


ZipFile對象表示整個歸檔文件,而ZipInfo對象則保存該歸檔文件中每個文件的有用信息


需要加ZipFile對象調用close()方法


>>> import zipfile
>>> exampleZip = zipfile.ZipFile('C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\appium-1.6.4-beta.zip')
>>> exampleZip.namelist()
返回壓縮文件中的文件列表
>>> exampleGetInfo = exampleZip.getinfo('appium-1.6.4-beta/test/parser-specs.js')
>>> exampleGetInfo.file_size
1935
>>> exampleGetInfo.compress_size
588




從zip文件中解壓縮


ZipFile對象的extractall()方法從zip文件中解壓縮所有文件和文件夾,放到當前目錄中


也可以向extractall()方法中傳遞一個文件夾名稱,它將文件解壓縮到那個文件夾,而不是當前工作目錄,如果傳遞的文件夾不存在,會被創建


ZipFile對象的extract()方法從zip文件中解壓縮單個文件,傳遞給extract()的字符串,必須是在namelist()中的一個,可以傳遞第二個參數,


指定解壓縮到指定文件夾,如果傳遞的文件夾不存在,會被創建,
extract()方法的返回值是被壓縮後文件的絕對路徑


>>> import zipfile
>>> exampleZipFile = zipfile.ZipFile('C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\appium-1.6.4-beta.zip')
>>> exampleZipFile.extractall('C:\\Users\\Nick\\Desktop\\python\\drawing\\2')
>>> exampleZipFile.extractall('C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\zip')
>>> exampleZipFile.extract('appium-1.6.4-beta/test/parser-specs.js','C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\zip')
'C:\\Users\\Nick\\Desktop\\python\\drawing\\2\\zip\\appium-1.6.4-beta\\test\\parser-specs.js'




創建和添加到ZIP文件


要創建自己的zip文件,必須以“寫模式”打開ZipFile對象,即傳入‘w’作爲第二個參數


如果ZipFile對象的write()方法傳入一個路徑,就會壓縮該路徑所指的文件,將它壓縮到ZIP中


write()方法的第一個參數是一個字符串,代表要添加的文件名,第二個參數是“壓縮類型”參數,告訴計算機採取什麼樣的算法來壓縮文件,可以總是將這個值設置爲zipfile.ZIP_DEFLATED


>>> import zipfile,os
>>> os.chdir('C:\\Users\\Nick\\Desktop\\python\\drawing\\2')
>>> newZip = zipfile.ZipFile('new.zip','w')
>>> newZip.write('3.txt',compress_type = zipfile.ZIP_DEFLATED)
>>> newZip.close()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章