检查并等待文件存在以进行读取

时间:2014-02-13 06:23:36

标签: python

我需要等到创建文件然后读取它。我有以下代码,但确定它不起作用:

import os.path
if os.path.isfile(file_path):
    read file in
else:
    wait

有什么想法吗?

4 个答案:

答案 0 :(得分:60)

一个简单的实现可能是:

import os.path
import time

while not os.path.exists(file_path):
    time.sleep(1)

if os.path.isfile(file_path):
    # read file
else:
    raise ValueError("%s isn't a file!" % file_path)

每次检查后等待一段时间,然后在路径存在时读取文件。如果永远不会创建文件,则可以使用KeyboardInterruption异常停止脚本。您还应检查路径是否为文件,以避免一些不必要的异常。

答案 1 :(得分:3)

import os
import time
file_path="AIMP2.lnk"
if  os.path.lexists(file_path):
    time.sleep(1)
    if os.path.isfile(file_path):
        fob=open(file_path,'r');
        read=fob.readlines();
        for i in read:
            print i
    else:
        print "Selected path is not file"
else:
    print "File not Found "+file_path

答案 2 :(得分:3)

一旦下载文件或创建了file_path,以下脚本将立即中断,否则它将等待长达10秒钟的时间来下载文件或创建file_path,然后再中断。

import os
import time

time_to_wait = 10
time_counter = 0
while not os.path.exists(file_path):
    time.sleep(1)
    time_counter += 1
    if time_counter > time_to_wait:break

print("done")

答案 3 :(得分:0)

此代码可以按文件大小检查下载。

import os, sys
import time

def getSize(filename):
    if os.path.isfile(filename): 
        st = os.stat(filename)
        return st.st_size
    else:
        return -1

def wait_download(file_path):
    current_size = getSize(file_path)
    print("File size")
    while current_size !=getSize(file_path) or getSize(file_path)==0:
        current_size =getSize(file_path)
        print("current_size:"+str(current_size))
        time.sleep(1)# wait download
    print("Downloaded")