我试图使用shutil.move
将文件从一个文件夹移动到同一个HD中的另一个文件夹。然而,这一过程需要很长时间才能完成。通常,在这些操作中,有太多的文件(几乎2,000个),这些文件加在一起总共有超过1TB。
我查看了shutil.move
文档,并解释了shutil.move
在其背后使用了一个复制函数(我猜这就是为什么这个过程如此缓慢):
shutil.move(src,dst,拷贝) 递归地将文件或目录(src)移动到另一个位置(dst)并返回目标。 如果目标是一个现有目录,那么src将移到该目录中。如果目标已经存在但不是目录,则可能会根据os.rename()语义覆盖它。 如果目标位于当前文件系统上,则使用os.rename()。否则,使用copy_function将src复制到dst,然后删除。对于符号链接,指向src目标的新符号链接将在dst中创建或作为dst创建,src将被移除。 如果给出了copy_function,那么它必须是一个可调用的,它包含两个参数src和dst,如果不能使用os.rename(),它将用于将src复制到dst。如果源是一个目录,则调用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上工作。
发布于 2021-11-05 18:46:25
我不知道为什么在使用shutil.move
时会出现这个问题。
我使用相同的文件系统(也在同一个硬盘中),在执行shutil.move(src, dst)
时,这个过程需要几个小时才能完成,当我手动(使用ctrl-X
快捷方式)完成该过程时,相同的文件会立即被移动。
我设法用os.rename
来解决这个问题,现在它工作得很好(文件正以使用ctrl-X
快捷方式快速移动)。如果其他人面临同样的问题,我将把这个答案留在这里,也许这会在某种程度上有所帮助。
https://stackoverflow.com/questions/69427982
复制相似问题