【发布时间】:2015-01-02 02:42:51
【问题描述】:
我一直在使用os.rename 在 Python 中移动文件。但是,如果您尝试在一个挂载点和另一个挂载点之间移动文件(在 Linux 上),这似乎会失败。
是否有 Python 库或函数可以在挂载点之间移动文件,类似于 Linux 上的 mv?
【问题讨论】:
标签: python file operating-system move
我一直在使用os.rename 在 Python 中移动文件。但是,如果您尝试在一个挂载点和另一个挂载点之间移动文件(在 Linux 上),这似乎会失败。
是否有 Python 库或函数可以在挂载点之间移动文件,类似于 Linux 上的 mv?
【问题讨论】:
标签: python file operating-system move
这是os.rename 的常见警告。更高级别的shutil 模块和它的move 方法可以通过使用os.rename() 或shutil.copy2() 来解决这个问题。
要记住的一点是,如果os.rename 不在同一个文件系统上,这将失去原子保证。
【讨论】:
mv 的文档指定,因为 rename 不能跨文件系统工作,mv 应该使用 cp 和 rm 如果它失败。等效地,os.rename 不能跨文件系统工作,shutil.move 使用 copy2 和适当的删除功能。
您可以使用mv 使用subprocess
from subprocess import check_call
check_call(["mv","src","dest"])
【讨论】:
shutil.move) 更清洁。