Python - 从源文件夹到多个目标的最快文件复制方法是什么
源文件夹是 /tmp/src,里面有 a、b、c、d 这些文件。
目标文件夹有两个,一个是 '/one',另一个是 '/two'。
我想把 a、b、c、d 这些文件都复制到这两个目标文件夹 '/one' 和 '/two'。
大概是这样的:
source = '/tmp/src'
destinations = []
def copy_files_multiple_dest(source,destinations)
对吧?现在,我该怎么遍历所有的目标文件夹呢?
4 个回答
1
通常我们会使用os这个包来处理相关的操作,但你可以看看这个新项目 https://github.com/amoffat/pbs。这样你就可以简单地这样做:
import pbs
destinations =['/one', '/two']
for destination in destinations:
pbs.copy("-R", '/tmp/src', destination)
虽然可能不是最快的,但绝对在美观上获胜。
1
这里只读取源文件一次是有道理的:
def xcopy_to_multiple_destinations(srcDir, destinations):
for filename in os.listdir(srcDir):
with open(os.path.join(srcDir, filename), "rb") as srcFile:
for destDir in destinations:
with open(os.path.join(destDir, filename), "wb") as destFile:
# ...copy bytes from srcFile to destFile...
如果你想要递归地复制文件,可以使用 os.walk
(可以参考其他问题:Python递归文件夹读取)。你可以根据这个方法进行调整。
需要注意的是,“最快”这个词是个宽泛的概念。例如,硬链接应该会更快;或者使用合适的文件系统进行写时复制。
1
你觉得这样怎么样:
import os
import shutil
source = '/tmp/src/'
destinations = []
def copy_files_multiple_dest(source,destinations):
sfiles = os.listdir(source) # list of all files in source
for f in sfiles:
for dest in destinations:
shutil.copy(os.path.join(source,f), dest)
我不确定这是不是最快的,但应该能完成任务。