posso reindirizzare con successo il mio output in un file, tuttavia questo sembra sovrascrivere i dati esistenti del file:append subprocess.Popen output to file?
import subprocess
outfile = open('test','w') #same with "w" or "a" as opening mode
outfile.write('Hello')
subprocess.Popen('ls',stdout=outfile)
rimuoverà la linea 'Hello'
dal file.
Credo che una soluzione è quella di memorizzare l'output altrove come una stringa o qualcosa (non sarà troppo lungo), e aggiungere manualmente con outfile.write(thestring)
- ma mi chiedevo se mi manca qualcosa all'interno del modulo che facilita Questo.
Nota sul post di cui sopra: dopo alcune prove, sembra che 'subprocess.Popen' ha bisogno di qualcosa di veramente come un file per i suoi' stdout' e 'stderr'arguments, quindi dare a loro un oggetto personalizzato con solo un metodo' write' non è sufficiente. Ho provato, ma è necessaria una funzione 'fileno', e non sono abbastanza bravo da emularlo su una mia classe. –
Ho tentato di utilizzare questo metodo ma ho scoperto che per qualche motivo, ogni volta che eseguo il processo esterno con un file che ho definitivamente aperto per l'aggiunta, l'output del processo scrive dall'inizio del file e sovrascrive qualsiasi informazione lì. Quindi, per poter utilizzare questa soluzione, è necessario chiamare log.seek (0, os.SEEK_END) subito dopo aver aperto il file. – Luke