2009-12-08 9 views
1

Donc, je voudrais récupérer stdout à partir d'un sous-processus, puis écrire la sortie dans un fichier en utilisant python. Le problème que je rencontre est le stdout du sous-processus perd la mise en forme, il contient des \ n où il y a des retours à la ligne. Je voudrais écrire la sortie dans un fichier avec la mise en forme intacte, ce qui signifie que, au lieu d'une ligne contenant \ n, le fichier contient les nouvelles lignes où il y a des \ n.Reconnaissance des caractères de nouvelle ligne en Python

Voici mon code existant:

import os, subprocess 
from cStringIO import StringIO 

proc = subprocess.Popen('foo.exe', shell=True, stdout=subprocess.PIPE,) 

stdout_value = proc.communicate()[0] 

f=open('fooOut.txt', 'w') 
f.write(str(repr(stdout_value))) 
f.close() 

fichier texte actuel: abbbb \ nabbbb \ naaaaab

Ce que je voudrais:

abbbb

bbbb

aaaaab

+1

Recherchez \\ n et remplacez par \ n. – StrixVaria

Répondre

3

N'appelez pas repr(), c.-à-d. il suffit d'appeler

f.write(stdout_value) 
1

Pourquoi repr? Cela transforme un objet en sa représentation, ce qui signifie pour les chaînes de convertir des choses comme chr(10) (nouvelle ligne) en '\n'.

0

Le repr (qui double les «échappements», c'est-à-dire les caractères antislash) est ce qui vous fait «perdre le formatage» - pourquoi faites-vous cela du tout? Et puis l'appel str est totalement redondant (inoffensif, mais totalement inutile - pourquoi l'avoir là ?!).

Questions connexes