Windows系統中用Python Shutil拷貝文件夾並保持目錄結構的方法([Errno 13] Permission denied的解決辦法)

這個博客的目的很簡單,希望用Shutil實現目錄拷貝,並且在目標文件夾中保持源文件夾中的目錄結構,但是如果直接用:

shutil.copy(source_dir,des_dir)

這種寫法,可能會報:PermissionError: [Errno 13] Permission denied,這種錯誤(像其他網友也討論了這種情況:https://stackoverflow.com/questions/39844123/permissionerror-errno-13-permission-denied-python)。那麼我們需要一種更可靠穩定的方法(雖然可以用os.system來運行windows系統命令,但畢竟用shutil可以實現更多更豐富的功能),所以下面的代碼提供一種可靠的拷貝方法,方便大家使用和參考:

import shutil
import os

source_dir='源文件夾'
des_dir='目標文件夾'

if(os.path.exists(des_dir)):
    shutil.rmtree(des_dir)
os.mkdir(des_dir)

for dirpath, dirnames, filenames in os.walk(source_dir):
    for each_file in filenames:
        path=os.path.join(dirpath,each_file)
        relative_path=path[path.index(source_dir)+len(source_dir)+1:path.rindex('\\')]
        dirs=relative_path.split('\\')
        for i in range(0,len(dirs)):
            this_dir="/"
            for j in range(0,i+1):
                this_dir=this_dir+dirs[j]+'/'
            if(not os.path.exists(des_dir+this_dir)):
                os.mkdir(des_dir+this_dir)
        shutil.copyfile(path, des_dir+'/'+relative_path+'/'+each_file)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章