gpt4 book ai didi

python - Shutil.move 是否保证删除或抛出?

转载 作者:行者123 更新时间:2023-12-01 06:51:19 27 4
gpt4 key购买 nike

https://docs.python.org/3/library/shutil.html#shutil.move

If the destination is on the current filesystem, then os.rename() is used. Otherwise, src is copied to dst using copy_function and then removed.

那么在这两种情况下,我能否确定如果函数没有抛出异常,源文件肯定不再可用?对于主机操作系统是否有不同的保证?

最佳答案

shutil 的源代码链接在文档顶部。

通过分析来源:

  • 如果源和目标相同,则重命名(“# We might be on a case insensitive filesystem”)并返回
  • 如果源已经存在,则抛出
  • 尝试重命名(在一个文件系统内移动),如果成功则返回
  • 如果失败,请尝试复制 - 它使用 copy_function然后使用 os.unlink 删除原始内容(或 rmtree 如果它是目录树 - 但它也在其中使用 os.unlink)。此操作不在 try block 中,因此任何异常都会传播。
<小时/>

好的,现在我们知道“删除”是由 os.unlink 完成的,因此要分析其行为,我们需要 see os.unlink docs ...这将我们重定向到 os.remove docs 。后者提供了有关操作系统特定行为和异常的更多信息:

On Windows, attempting to remove a file that is in use causes an exception to be raised; on Unix, the directory entry is removed but the storage allocated to the file is not made available until the original file is no longer in use.

关于python - Shutil.move 是否保证删除或抛出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58991035/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com