0

我想要做的是检查文件是否存在,如果不存在,则执行操作,然后再次检查,直到文件存在,然后代码继续执行其他操作。

4

2 回答 2

4

为简单起见,我将实现一个小的轮询函数,并设置超时以确保安全:

def open_file(path_to_file, attempts=0, timeout=5, sleep_int=5):
    if attempts < timeout and os.path.exists(path_to_file) and os.path.isfile(path_to_file): 
        try:
            file = open(path_to_file)
            return file
        except:
            # perform an action
            sleep(sleep_int)
            open_file(path_to_file, attempts + 1)

我还会考虑使用 Python 内置轮询,因为这将跟踪/报告文件描述符的 I/O 事件

于 2013-01-18T18:00:34.193 回答
1

假设你在 Linux 上:

如果你真的想避免任何类型的循环来查找文件是否存在并且你确定它会在某个时候被创建并且你知道它将被创建的目录,你可以使用pynotify跟踪对父目录的更改. 它会在发生变化时通知您,您可以检测它是否是您需要创建的文件。

但是,根据您的需要,它可能比它的价值更麻烦,在这种情况下,我建议使用像 Kyle 的解决方案这样的小型轮询功能。

于 2013-01-18T17:54:16.770 回答