1. 程式人生 > >python2.x shutil模組和send2trash模組

python2.x shutil模組和send2trash模組

shutil模組
    shutil(或稱為shell工具)模組中包含一些函式,讓你在python程式中複製、移動、改名和刪除檔案。
    要使用shutil的函式,首先需要import shutil

    1.複製檔案和資料夾
    shutil模組提供了一些函式,用於複製檔案和整個資料夾。
    呼叫shutil.copy(source,destination), 將路徑source處的檔案複製到路徑destination處的資料夾(source和destination都是字串)
    如果destination是一個檔名,它將作為被複制檔案的新名字。該函式返回一個字串,表示被複制檔案的路徑。

    shutil.copy()將複製一個檔案,shutil.copytree()將複製整個資料夾,以及它包含的資料夾和檔案。
    shutil.copytree(source, destination), 將路徑source處的資料夾,包括它的所有檔案和子資料夾,複製到路徑destination處的資料夾。
    source和destination引數都是字串。該函式返回一個字串,是新複製的資料夾的路徑

    2.檔案和資料夾的移動與改名
    呼叫shutil.move(source, destination), 將路徑source處的資料夾移動到路徑destination,並返回新位置的絕對路徑的字串。
    如果destination指向一個資料夾,source檔案將移動到destination中,並保持原來的檔名。

    3.永久刪除檔案和資料夾
    利用os模組中的函式,可以刪除一個檔案或一個空資料夾。但利用shutil模組,可以刪除一個資料夾及其所有的內容。
        1. 利用os.unlink(path) 將刪除path處的檔案。
        2. 呼叫os.rmdir(path) 將刪除path處的資料夾。該資料夾必須為空,其中沒有任何檔案和資料夾
        3. 呼叫shutil.rmtree(path) 將刪除path處的資料夾,它包含的所有檔案和資料夾都會被刪除。

send2trash模組
    因為Python內建的shutil.rmtree() 函式不可恢復地刪除檔案和資料夾,可以利用send2trash模組安全地刪除。
    利用send2trash,比Python常規的刪除函式要安全得多,因為它會將資料夾和檔案傳送到計算機的垃圾箱或回收站,而不是永久刪除他們。

    send2trash.send2trash()函式來刪除檔案和資料夾。雖然它將檔案傳送到垃圾箱,讓你稍後能夠恢復她們,但是這不像永久刪除檔案,不會釋放磁碟空間。
    如果你希望程式釋放磁碟空間,就要利用os和shutil來刪除檔案和資料夾。注意,send2trash() 函式只能將檔案傳送到垃圾箱,不能從中恢復檔案。遍歷目錄樹 os.walk()函式

import os

for folder_name, sub_folders, file_names in os.walk('c:\\test'):
    print 'The current folder is', folder_name
    for sub_folder in sub_folder:
        print 'SUBFOLDER OF %s : %s' % (folder_name, sub_folder)
    for file_name in file_names:
        print 'FILE INSIDE %s : %s ' % (folder_name, file_name)

os.walk()函式被傳入一個字串值,即一個資料夾的路徑。os.walk()函式在迴圈的每次迭代中,返回3個值:
    1. 當前資料夾名稱的字串
    2. 當前資料夾中子資料夾的字串的列表
    3. 當前資料夾中檔案的字串的列表