如果被扫描的文件os.步行在执行过程中是否发生了变化?

2024-04-25 20:03:46 发布

您现在位置:Python中文网/ 问答频道 /正文

在.NET版本中有一个similar question,但我要特别询问Python os.walk函数。我正在使用最新的python3。你知道吗

假设我有一个目录,其中有许多文件。我正在对每个文件执行一个需要一段时间的操作,为root目录留有足够的时间由另一个进程在半循环中更改。为了清楚起见,下面是一个例子:

for root, dirs, files in os.walk(rootDirectory):
    for file in files:
        doAReallyLongBlockingCall(file)

os.walk会检测到这样的变化吗?如果我添加文件,它们会被os.walk找到吗?你知道吗


Tags: 文件函数in版本目录fornetos
1条回答
网友
1楼 · 发布于 2024-04-25 20:03:46

这不是真的os.步行但是操作系统做什么呢 在linux上,一旦打开dir(有一个系统调用),数据就不会在您的手中更改

因此,如果在循环中打开一个文件并花10分钟来处理它,而其中一个未处理的文件被删除,walk仍将为您提供名称,并且在opendir之后创建的任何文件都不会被列出

当您在获取文件之前丢失文件时,您将需要异常来处理这些情况

相关问题 更多 >