Python的shutil.move()函数在Linux上是原子性的吗?

21

我想知道在Linux上,Python的shutil.move是否是原子的?如果源文件和目标文件在两个不同的分区上,行为是否有所不同,或者与它们在同一分区上时相同?

我更关心的是,如果源文件和目标文件在同一分区上,shutil.move是否是原子的!


你读过源代码吗?它在你的电脑上的Python库中可用。你在shutil模块中看到了什么? - S.Lott
1个回答

24

如果文件在不同的文件系统上,则它不是原子性的。此时,Python会打开源文件和目标文件,循环读取源文件并将其写入目标文件,最后删除源文件。

如果源文件和目标文件在同一文件系统上,则Python使用原子性的rename() C调用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接