Controleer en wacht tot er een bestand bestaat om het te lezen

Ik moet wachten tot een bestand is aangemaakt en het dan inlezen. Ik heb de onderstaande code, maar weet zeker dat het niet werkt:

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

Heeft u ideeën alstublieft?


Antwoord 1, autoriteit 100%

Een eenvoudige implementatie zou kunnen zijn:

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)

Je wacht een bepaalde tijd na elke controle en leest dan het bestand als het pad bestaat. Het script kan worden gestopt met de uitzondering KeyboardInterruptionals het bestand nooit wordt gemaakt. Je moet ook controleren of het pad een bestand na is, om ongewenste uitzonderingen te voorkomen.


Antwoord 2, autoriteit 17%

Het volgende script zal breken zodra het bestand is gedownload of het bestandspad is gemaakt, anders zal het tot 10 seconden wachten voordat het bestand is gedownload of het bestandspad is gemaakt voordat het wordt verbroken.

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

Antwoord 3, autoriteit 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

Antwoord 4

Deze code kan de download controleren op bestandsgrootte.

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")
    time.sleep(1)
    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")

Antwoord 5

import os.path
import time
file_present = False
while file_present = False:
    if os.path.isfile(file_path):
       # read file in
       file_present = True
       break
    time.sleep(5)

Other episodes