2016-08-30 146 views
1

我試圖在Python中製作一個程序,將我的閃存驅動器(字母D :)上的文件複製到硬盤上的文件夾,但得到PermissionError: [Errno 13] Permission denied:'D:'Python - Errno 13權限在嘗試複製文件時被拒絕

我的代碼有問題的部分如下:

# Copy files to folder in current directory 
def copy(): 
    source = getsource() 

    if source != "failure": 

     copyfile(source, createfolder()) 
     wait("Successfully backup up drive" 
      "\nPress 'Enter' to exit the program") 

    else: 
     wait("No USB drive was detected" 
      "\nPress 'Enter' to exit") 

# Create a folder in current directory w/ date and time 
def createfolder(): 
    name = strftime("%a, %b %d, %Y, %H.%M.%S", gmtime()) 
    dir_path = os.path.dirname(os.path.realpath(__file__)) 
    new_folder = dir_path + "\\" + name 
    os.makedirs(new_folder) 

return new_folder 

一切看上去一切正常,直到的CopyFile()函數運行,它會返回錯誤。 我試圖與文件的目標替代的getSource()來代替,而它返回相同的權限錯誤除了new_folder目錄來代替。

我已經閱讀了其他幾篇文章,但沒有一篇與我的案例有關。我對這兩個地點都有完整的管理權限。 任何幫助將不勝感激!

+0

我想這可能是因爲你可能試圖打開'D:'目錄,就像它是一個文件一樣。 – Harrison

+0

@Harrison有沒有一種方法可以打開目錄,以便我可以複製其中的文件? –

+0

是的,我會發佈一個答案。 – Harrison

回答

0

正如我在上面的評論中所說的那樣,好像你試圖打開目錄D:,就好像它是一個文件一樣,這不會起作用,因爲它不是文件,而是目錄。

您可以使用os.listdir()列出所需目錄中的所有文件,然後使用shutil.copy()複製文件。

這裏是爲每個的文檔:

os.listdir()(您將通過完整的文件路徑,此功能)

shutil.copy()(您將每個文件傳遞給該功能)

基本上你會將目錄中的所有文件存儲在一個變量中,如all_the_files = os.listdir(/path/to/file),然後通過all_the_files循環執行for each_file in all_the_files:之類的操作,然後使用shutil.copy()複製它們。

+0

所以,這工作完美,但現在我仍然得到相同的錯誤文件夾,我試圖複製到...任何建議? –

+0

只是看着資料,發現正確shutil方法是'複製()',複製到指定目錄。 'copyfile()'將文件的內容複製到另一個文件。再次感謝您的答案! –

+0

@QuintonShips很高興我能夠幫助:) – Harrison

相關問題