E cosa non sai fare di preciso?1 vorrei che il programma che viene avviato con subprocess.Popen non si avviasse la prima volta che viene eseguito lo script (per capirci, lo script lo esegue solo se esiste un file che viene creato solo dopo la prima eseguzione dello script)
Usa os.path.exists() per verificare se il file esiste o meno.
Se non esiste lo crei ( open('nome_file', 'w') ) e forzi l'uscita con sys.exit().
Se esiste lanci la Popen e fai quello che devi fare.
Uhm... qui gia un po' più difficile.2 vorrei che dopo 40 secondi fosse chiuso quel programma avviato con subprocess.Popen
Potresti killare il processo dato il pid. Non è molto elegante e perdi in portabilità ma cmq funziona.
Per Windows usando pywin32 (da installare a parte):
Per Windows usando ctypes (non devi installare nulla con python 2.5 o superiore):codice:import subprocess import time import win32api command = 'C:\\eseguibile.exe' pipe = subprocess.Popen(command, stdout=subprocess.PIPE) time.sleep(40) win32api.TerminateProcess(int(pipe._handle), -1)
Per UNIX usando banalmente os.kill:codice:import subprocess import time import ctypes command = 'C:\\dc.exe' pipe = subprocess.Popen(command, stdout=subprocess.PIPE) time.sleep(40) ctypes.windll.kernel32.TerminateProcess(int(pipe._handle), -1)
codice:import subprocess import time import os command = '/usr/bin/eseguibile' pipe = subprocess.Popen(command, stdout=subprocess.PIPE) time.sleep(40) os.kill(int(pipe._handle))In che senso? time.sleep() non ti basta?Come si può mettere un tempo di timeout per uno script?
Come si fa un ciclo if basato sull'esistenza di un file?codice:import os if os.path.exists('file'): .... else: ....

Rispondi quotando