让Python等到文件存在后再继续

时间:2013-11-11 04:17:22

标签: python

在我的代码中,我将文件写入硬盘。之后,我需要导入生成的文件,然后继续处理它。

for i in xrange(10):
    filename=generateFile()
    # takes some time, I wish to freeze the program here
    # and continue once the file is ready in the system
    file=importFile(filename)
    processFile(file)

如果我一次性运行代码段,很可能file=importFile(filename)会抱怨该文件不存在,因为生成需要一些时间。

我曾经手动运行filename=generateFile()并在运行file=importFile(filename)之前等待 现在我正在使用for循环,我正在寻找一种自动方式。

2 个答案:

答案 0 :(得分:2)

您可以使用time.sleep我希望如果您以这种方式加载模块,则需要reload而不是import后的import。< / p>

但是,除非文件非常大,为什么不生成字符串然后evalexec呢?

注意,因为你的文件生成函数没有在一个线程中被调用,所以它应该是阻塞的,并且只会在它认为已经完成写入时返回 - 可能你可以通过确保文件来改进编写器以outfile.flush()然后outfile.close()结束,但在某些操作系统上,可能仍有文件实际可用的时间。

答案 1 :(得分:0)

for i in xrange(10):
    (filename, is_finished)=generateFile()
    while is_finished:
        file=importFile(filename)
        processFile(file)
        continue;

我认为您应该使用标志来测试文件是否生成。