使用shutil移动文件.移动太慢了



我试图使用shutil.move将文件从一个文件夹移动到另一个相同的高清。然而,这个过程需要很长时间才能完成。通常在这些操作中有太多的文件(几乎2000个),这些文件加在一起超过1TB。

我查看了shutil.move文档,并解释了shutil.move使用背后的复制功能(我想这就是为什么这个过程如此缓慢):

shutil。move(src, dst, copy_function=copy2)

递归移动文件或目录(src)到另一个位置(dst)并返回目的地。

如果目标是一个已存在的目录,那么src将被移动到该目录中。如果目的地已经存在,但不是目录,它可能会被覆盖,这取决于os.rename()语义。

如果目标在当前文件系统上,则使用os.rename()。否则,src是使用copy_function dst,然后复制移除。在符号链接的情况下,指向目标的新符号链接SRC将在DST中创建或作为DST创建,SRC将被删除。

如果给出了copy_function,它必须是一个可调用对象,接受两个参数src和dst,并将用于将src复制到dst IfOs.rename()不能使用。如果源是目录,则copytree()将copy_function()传递给它。默认的copy_function是copy2()。使用copy()作为copy_function允许移动到如果无法复制元数据,则在不复制任何元数据的代价。

我已经尝试在shutil.move文档中提供的复制函数之间进行更改,但这并没有改善移动文件的时间。

当我尝试自己使用ctrl + X移动文件时,文件会立即移动。有人知道shutil.move如果有另一种方法,我可以使用相同的性能ctrl + X命令吗?

提前感谢。

编辑

我把所有我想要移动的文件放在一个文件夹中,然后执行shutil.move,所以我的代码只是:

src_folder = 'C:/Users/sim/Documents/files_to_move'
dst_folder = 'C:/Users/sim/Documents/_out/'
shutil.move(src_folder, dst_folder)

我也在Windows 10上工作。

我不知道为什么我在使用shutil.move时遇到这个问题。

我正在使用相同的文件系统(在相同的硬盘驱动器中),当我执行shutil.move(src, dst)时,该过程需要数小时才能完成,当我手动执行时(使用ctrl-X快捷方式),相同的文件立即移动。

我设法使用os.rename来解决问题,现在它可以完美地工作(文件正在快速移动,因为使用ctrl-X快捷方式)。如果有人遇到同样的问题,我将把这个答案留在这里,也许这能在某种程度上有所帮助。

相关内容

  • 没有找到相关文章

最新更新