在 python 程序中复制文件的最快方法是什么?
使用 shutil.copyfile()
复制文件比使用 Windows 文件资源管理器或 Mac 的 Finder 进行常规的右键单击复制 > 右键单击粘贴至少花费 3 倍的时间。在 Python 中是否有比 shutil.copyfile()
更快的替代方案?如何加快文件复制过程? (文件目的地在网络驱动器上……如果有任何区别……)。
稍后编辑:
这是我最终得到的:
def copyWithSubprocess(cmd):
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
win=mac=False
if sys.platform.startswith("darwin"):mac=True
elif sys.platform.startswith("win"):win=True
cmd=None
if mac: cmd=['cp', source, dest]
elif win: cmd=['xcopy', source, dest, '/K/O/X']
if cmd: copyWithSubprocess(cmd)
原文由 alphanumeric 发布,翻译遵循 CC BY-SA 4.0 许可协议
最快的版本没有过度优化我使用以下代码获得的代码:
这段代码运行起来比本地 linux“cp -rf”慢一点。
与 shutil 相比,本地存储到 tmfps 的增益约为 2-3 倍,NFS 到本地存储的增益约为 6 倍。
在分析之后,我注意到 shutil.copy 做了很多相当重量级的 fstat 系统。如果想进一步优化,我建议为 src 做一个 fstat 并重用这些值。老实说,我没有走得更远,因为我得到的数据几乎与本地 linux 复制工具相同,并且优化几百毫秒不是我的目标。