Python等待并检查文件是否完全由外部程序创建

时间:2013-11-19 01:02:44

标签: python file python-3.x time thread-safety

我目前在目录'DIR'中的文件中输出外部程序。现在,如果我想从python中看到文件是否完全创建,我该如何检查并完成执行程序。

我的研究表明可以通过

完成
os.path.isfile(FILE_NAME)

但我如何继续检查,以某种方式不会弄乱其他程序。这是我有所了解的事情?请告诉我这是如何实现的?还是我的模板足够好?

counter = 0;

While os.path.isfile(FILE_NAME) == False:
 Time.Sleep(3)
 counter += 1

if counter < 5:
   # I guess we are good at this point ?

感谢您的时间和考虑。

1 个答案:

答案 0 :(得分:5)

这种方法显然只能在Windows上运行(参见下面的评论),并且依赖于外部程序在创建文件期间仅打开和关闭文件的事实。

import time

filename = 'my_file.txt'
while True:
    try:
        with open(filename, 'rb') as _:
            break
    except IOError:
        time.sleep(3)

如果要设置访问次数的最大限制,可以执行以下操作:

import time

filename = 'my_file.txt'
max_i = 10

for i in xrange(max_i):
    try:
        with open(filename, 'rb') as _:
            break
    except IOError:
        time.sleep(3)
else:
    raise IOError('Could not access {} after {} attempts'.format(filename, str(max_i)))