在python中复制文件时添加多个目录作为目标

在python中复制文件时添加多个目录作为目标,python,Python,我想同时将整个目录或文件从一个目录复制到两个或多个目录。我正在努力使用语法为目的地添加更多目录,因此复制是同时完成的(因为我将运行cron作业) 如果我只有一个目录,一切都正常,但是我需要添加两个或更多 最后一行代码是: shutil.copy(full_file_name, r'S:\\A') 我想在S之后添加更多目标文件夹:\ (这是用于Win机器的) 谢谢你的帮助 为什么不直接在循环中换行: destinations = [r'S:\\A', r'S:\\B', r'S:\\C'] fo

我想同时将整个目录或文件从一个目录复制到两个或多个目录。我正在努力使用语法为目的地添加更多目录,因此复制是同时完成的(因为我将运行cron作业)

如果我只有一个目录,一切都正常,但是我需要添加两个或更多

最后一行代码是:

shutil.copy(full_file_name, r'S:\\A')
我想在S之后添加更多目标文件夹:\

(这是用于Win机器的)


谢谢你的帮助

为什么不直接在循环中换行:

destinations = [r'S:\\A', r'S:\\B', r'S:\\C']
for dest in destinations:
    shutil.copy(full_file_name, dest)

在本例中,您定义了以前的文件夹和目标文件夹数组。Python然后在
for
循环中迭代目标。注意使用了
os.path.join
,这是一种为跨平台工作构建文件路径的安全方法

import shutil
import os


full_file_path =  os.path.join('home', 'orig')
paths = [os.path.join('home', 'destA'), os.path.join('home', 'destB')]
for path in paths:
    shutil.copy(full_file_path, path)

如果要同时复制文件,应使用。 在这个示例中,我们有两个文件file1.txt和file2.txt,我们将它们复制到c:\temp\0和c:\temp\1

import multiprocessing
import shutil

def main():
    orgs = ['c:\\temp\\file1.txt']
    dests = ['c:\\temp\\0\\', 'c:\\temp\\1\\'] 
    num_cores = multiprocessing.cpu_count()
    p = multiprocessing.Pool(num_cores)
    operations =  [(x,y) for x in orgs for y in dests]
    p.starmap(shutil.copy, operations)
    p.close()
    p.join()

if __name__ == "__main__":
    main()

我认为您必须为每个目标目录添加一个
shutil.copy()
。无法“同时”复制到两个目标。在计算机程序中,几乎没有什么事情是“同时”发生的,我想这可能是问错了问题。您的意思是两个目标中的文件都应该同步创建,还是只执行一行代码来完成两件事?是的-对不起,我不是指“完全相同的时间”,而是在同一(或少数)行代码中。谢谢,谢谢你的帮助。我肯定会测试/使用您的解决方案,因为我大部分时间都在处理大文件,我想这将利用更多的内核。@alc,如果是您最喜欢的,请将其标记为有用和最喜欢的!;)非常感谢。非常好/简单的解决方案。我将很快进行测试并提供反馈。到目前为止,我只是测试了F先生建议的环包装。如果我需要更多的帮助,我会回来,但到目前为止,这里所有的解决方案都满足了我的需要。谢谢