我想知道在Linux上,Python的shutil.move是否是原子的?如果源文件和目标文件在两个不同的分区上,行为是否有所不同,或者与它们在同一分区上时相同? 我更关心的是,如果源文件和目标文件在同一分区上,shutil.move是否是原子的!
如果文件在不同的文件系统上,则它不是原子性的。此时,Python会打开源文件和目标文件,循环读取源文件并将其写入目标文件,最后删除源文件。 如果源文件和目标文件在同一文件系统上,则Python使用原子性的rename() C调用。
shutil
模块中看到了什么? - S.Lott