2012-10-25 145 views
1

我想將某個文件複製到指定的路徑。這個指定的路徑有很多目錄的層次結構,這些目錄不是預先存在的,需要在複製過程中創建。使用Python複製文件到路徑

我試過shutil.copy*函數,但它們似乎都要求預先創建目標路徑中的目錄。

是否有任何功能根據需要設置這些目錄並複製文件?

用法示例:

copy_file('resources/foo.bar', expanduser('~/a/long/long/path/foo.bar')) 
+1

您可以在複製之前執行['mkdir -p'等價操作](http://stackoverflow.com/questions/600268/mkdir-p-functionality-in-python)。 –

回答

4

您可以使用os.makedirs遞歸創建你所需要的樹形圖,然後使用shutil.copy

target_dir = os.path.expanduser('~/a/long/long/path') 
os.makedirs(target_dir) 
shutil.copy('resources/foo.bar', os.path.join(target_dir, 'foo_bar')) 

這樣,你在分解任務管理問題(創建然後複製),它可以讓你處理這種情況的目錄崩潰的創建(繼「明確優於隱式」)的情況下。

+1

[makedirs]的參數由['os.path.dirname'](http://docs.python.org/library/os.path.html#os.path.dirname)給出。 – katrielalex

+0

我的+1。如果目標目錄不存在,並且您想複製整個樹,也可以使用'shutil.copytree()'。 – pepr