使用shutil.copyfile()
复制文件比使用Windows文件资源管理器或Mac's 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)
最快的版本,没有过度优化代码,我有以下代码:
这段代码的运行速度比原生linux“cp-rf”慢一点。
与shuil相比,本地存储到tmfps的增益约为2x-3x,而NFS到本地存储的增益约为6x。
在分析之后,我注意到shutil.copy做了很多fstat系统调用,它们相当重。 如果有人想进一步优化,我建议对src执行一个fstat并重用这些值。老实说,我没有进一步,因为我得到了几乎与本地linux拷贝工具相同的数据,优化几百毫秒并不是我的目标。
您只需使用正在进行复制的操作系统即可,对于Windows:
/K-复制属性。通常,Xcopy重置只读属性
/O-复制文件所有权和ACL信息。
/X-复制文件审核设置(暗示/O)。
相关问题 更多 >
编程相关推荐