如何创建一个循环检查文件是否存在?

0 投票
2 回答
7831 浏览
提问于 2025-04-17 13:14

我想做的是检查一个文件是否存在。如果这个文件不存在,我就执行一个操作,然后再检查一次,直到这个文件存在为止。等文件存在后,代码就继续进行其他操作。

2 个回答

1

假设你在使用Linux系统:

如果你真的想避免任何循环来检查文件是否存在,并且你确定这个文件会在某个时候被创建,而且你知道它会被创建在哪个文件夹里,你可以使用pynotify来监控这个文件夹的变化。这样一来,当文件夹里有东西变化时,它会通知你,你就可以判断是不是你需要的那个文件被创建了。

不过,根据你的需求,这种方法可能会比你想象的麻烦,所以我建议你可以使用一个简单的轮询函数,比如Kyle的解决方案。

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自带的轮询,因为这样可以跟踪和报告你的文件描述符的输入输出事件。

撰写回答