我想将整个目录或目录中的文件同时复制到两个或多个目录中。我正在努力使用语法为目标添加更多目录,因此副本同时完成(因为我将运行一个cron作业)。
如果我有一个目录,一切正常,但我需要添加两个或更多。
最后一行代码是:
shutil.copy(full_file_name, r'S:\\A')
我想在S:\
之后添加更多目标文件夹(这适用于Win机器)
感谢您的帮助!
答案 0 :(得分:1)
为什么不包裹循环:
destinations = [r'S:\\A', r'S:\\B', r'S:\\C']
for dest in destinations:
shutil.copy(full_file_name, dest)
答案 1 :(得分:1)
在此示例中,您将定义之前的文件夹和目标文件夹数组。然后,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)
答案 2 :(得分:0)
如果要同时复制文件,则应使用multiprocessing。 在此示例中,我们有两个文件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()