"os" 模块中的功能是否等待完成?

Do functions in the "os" module wait to be finished?

与:

import os
for file in files:
   os.remove(file)

它会在每次调用 os.remove() 时像同步函数一样等待每个文件被删除,还是会在调用 os.remove() 时循环访问?

通常,os 模块提供围绕 system calls of the operating system. For example, on Linux the os.remove/os.unlink functions correspond to the unlink 系统调用的包装器。这些函数等待系统调用完成。

这是否意味着程序预期的高级操作已经完成取决于use-case。
例如,unlink只是删除指向文件内容的路径;如果同一文件有其他路径(即 hardlinks) or processes with a file handle on it, the file content remains. Only when all references are gone is the file content eligible for removal from the filesystem (similar to reference counting)。文件系统本身可能会任意延迟内容的删除,并且分布式文件系统可能具有额外的一致性和同步约束。

根据经验,如果没有特殊要求,则可以考虑 os 调用是及时和同步的。如果有特定要求,例如文件内容被完全销毁,请阅读相关组件的特定行为。