2012-10-25 105 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