我想知道python的shutil.move是否在linux上是原子的?如果源文件和目标文件位于两个不同的分区上,或者它们是否位于同一分区上时,行为是否不同?
如果源文件和目标文件在同一个分区上,我更关心shutil.move是否是原子的!
答案 0 :(得分:17)
如果文件位于不同的filsystems上,则不是原子的。在这种情况下,python打开源文件和目标文件,从源读取循环并写入desination,最后取消链接源文件。
如果源文件系统和目标文件在同一个文件系统上,python使用rename()C调用,这是原子的。