J'ai besoin de diffuser à une liste la sortie d'un fichier, je reçois les données correctes, mais avec beaucoup d'ordure à la fin et ne pas comprends ce que je fais de mal.Python: Junk reçu quand readline() un processus appelé avec Popen()
Le (ce que je pensais était assez simple) Code popen est:
stream = []
p = Popen(["python", "-u", "test.py"], stdout=PIPE, bufsize=1)
while p.poll() is None:
stream.append(p.stdout.readline())
print stream
print 'Returned: {0}'.format(p.returncode)
La sortie d'appeler ceci est:
La sortie de l'exécuter est la suivante:
['[INDEX 0] Current index position\n', '[INDEX 1] Current index position\n', '[INDEX 2] Current index position\n', '[INDEX 3] Current index position\n', '[INDEX 4] Current index position\n', 'exiting.
...\n', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '',
'', '', '', '', '', '', '', '', '', '', '', '', '', '']
Returned: -4
test .py est:
index = 0
while True:
print '[INDEX {0}] Current index position'.format(index)
index += 1
if index == 5: break
import sys
print 'exiting....'
sys.exit(-4)
Sur quel système êtes-vous. Cela fonctionne sur Linux. Essayez de définir 'bufsize = -1' (système par défaut) –
Le système d'exploitation est Windows 10. Je reçois les données réelles, mais avec des déchets supplémentaires. Suis-je manquer un contrôle que le processus a terminé. L'utilisation de bufsize = -1 n'a fait aucune différence –