Python while循环检查文件是否存在

时间:2013-01-18 17:49:32

标签: python exception-handling while-loop

嘿伙计们我正在编写一些对我来说很奇怪的东西,而且我无法从逻辑上弄清楚如何实现它,我觉得如果我这样做会被cpu融化 - 所以我想我会问那些真正了解的人。

我想要做的是检查文件是否存在,如果不存在,执行操作,然后再次检查,直到文件存在,然后代码传递给它。我试过谷歌搜索无济于事。感谢任何帮助过的人!

2 个答案:

答案 0 :(得分:3)

为简单起见,我会实现一个小的轮询功能,安全超时:

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内置polling,因为这将跟踪/报告文件描述符的I / O事件

答案 1 :(得分:1)

假设您使用的是Linux:

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

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