使用 shutil.move 移动文件太慢

Moving files using shutil.move is too slow

我正在尝试使用 shutil.move 将文件从一个文件夹移动到同一 HD 中的另一个文件夹。然而,这个过程需要很长时间才能完成。通常在这些操作中,文件太多(将近 2,000 个),这些文件加起来总共超过 1TB。

我查看了 shutil.move 文档,其中解释说 shutil.move 在其背后使用了复制功能(我想这就是该过程如此缓慢的原因):

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

Recursively move a file or directory (src) to another location (dst) and return the destination.

If the destination is an existing directory, then src is moved inside that directory. If the destination already exists but is not a directory, it may be overwritten depending on os.rename() semantics.

If the destination is on the current filesystem, then os.rename() is used. Otherwise, src is copied to dst using copy_function and then removed. In case of symlinks, a new symlink pointing to the target of src will be created in or as dst and src will be removed.

If copy_function is given, it must be a callable that takes two arguments src and dst, and will be used to copy src to dst if os.rename() cannot be used. If the source is a directory, copytree() is called, passing it the copy_function(). The default copy_function is copy2(). Using copy() as the copy_function allows the move to succeed when it is not possible to also copy the metadata, at the expense of not copying any of the metadata.

我已经尝试在 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 快捷方式一样快)。如果其他人遇到同样的问题,我会在这里留下这个答案,也许这会在某种程度上有所帮助。