2017-07-16 109 views
1

我有一個文件存儲在一個變量(比如說)filePath中的路徑。我想將該特定文件複製到Python腳本中的另一個特定文件夾。如何將文件複製到Python腳本中的特定文件夾?

我試圖

folderPath = (os.getcwd() + "/folder_name/") #to get the path of the folder 
shutil.copyfile(filePath, folderPath) 

但我得到了一個錯誤IOError: [Errno 21] Is a directory

我該如何解決這個問題?

我的問題似乎是How do I copy a file in python? 的重複。但實際上,我想將文件複製到文件夾/目錄,而對該問題的大多數答案都提到將一個文件複製到另一個文件文件

回答

2

使用shutil.copy(filePath, folderPath)而不是shutil.copyfile()。這將允許您指定一個文件夾作爲目的地並複製包含權限的文件。

shutil.copy(SRC,DST,*,follow_symlinks =真):

複製文件src到的文件或目錄DST。 src和dst應該是字符串。如果dst指定了一個目錄,則該文件將使用src中的基本文件名複製到dst中。返回新創建文件的路徑。

...

拷貝()複製文件數據和文件的權限模式(見os.chmod())。其他元數據,如文件的創建和修改時間,不會保留。要保留原始文件中的所有文件元數據,請改用copy2()。

https://docs.python.org/3/library/shutil.html#shutil.copy

見覆制也記錄在shutil.copyfile()本身的區別:

shutil.copyfile(SRC,DST,*,follow_symlinks = TRUE):

複製將名爲src 的文件的內容(無元數據)複製到名爲dst的文件並返回dst。 src和dst是以字符串形式給出的路徑名。 dst必須是完整的目標文件名; 查看shutil.copy()獲取接受目標目錄路徑的副本。如果src和dst指定相同的文件,則引發SameFileError。

https://docs.python.org/3/library/shutil.html#shutil.copyfile

+0

是的,這也適用:) – dravid07

0

folderpath必須是文件,而不是目錄。錯誤說明了這一切。這樣做:

shutil.copyfile(filePath, folderPath+'/file_copy.extension') 
1

更改如下代碼:

folderPath = os.path.join('folder_name', os.path.basename(filePath)) 
shutil.copyfile(filePath, folderPath) 
+0

呀,這個工程。 – dravid07

相關問題