Мне нужно подождать, пока файл не будет создан, а затем прочитайте его. У меня есть код ниже, но он не работает:
import os.path
if os.path.isfile(file_path):
read file in
else:
wait
Любые идеи, пожалуйста?
Мне нужно подождать, пока файл не будет создан, а затем прочитайте его. У меня есть код ниже, но он не работает:
import os.path
if os.path.isfile(file_path):
read file in
else:
wait
Любые идеи, пожалуйста?
Простая реализация может быть:
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
, если файл никогда не создается. Вы также должны проверить, является ли путь файлом после, чтобы избежать некоторых нежелательных исключений.
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
Этот код может проверить загрузку по размеру файла.
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")
Следующий скрипт сломается, как только файл будет загружен или файл 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")