Подтвердить что ты не робот

Проверьте и подождите, пока файл не будет прочитан.

Мне нужно подождать, пока файл не будет создан, а затем прочитайте его. У меня есть код ниже, но он не работает:

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

Любые идеи, пожалуйста?

4b9b3361

Ответ 1

Простая реализация может быть:

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)

Вы ожидаете определенное количество времени после каждой проверки, а затем читаете файл, когда путь существует. script можно остановить с помощью исключения KeyboardInterruption, если файл никогда не создается. Вы также должны проверить, является ли путь файлом после, чтобы избежать некоторых нежелательных исключений.

Ответ 2

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

Ответ 3

Этот код может проверить загрузку по размеру файла.

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")

Ответ 4

Следующий скрипт сломается, как только файл будет загружен или файл 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")