所以我想从子进程中获取stdout,然后使用python将输出写入文件。
我遇到的问题是来自子进程的stdout丢失了格式,它包含\ n,其中有换行符。我想将输出写入格式完整的文件中,这意味着代替包含\ n的一行,该文件包含有\ n的新行。
这是我现有的代码:
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()
当前文件文本:abbbb \ nabbbb \ naaaaab
我想要的是什么:
abbbb
BBBB
AAAAAB
答案 0 :(得分:3)
请勿拨打repr()
,即。只需致电
f.write(stdout_value)
答案 1 :(得分:1)
为什么repr
?这会将对象转换为其表示形式,对于字符串来说意味着将chr(10)
(换行符)转换为'\n'
。
答案 2 :(得分:0)
repr
(两倍于“逃脱”,即反斜杠字符)是导致你“失去格式”的原因 - 为什么你要这样做呢?顺便说一下,str
电话是完全多余的(无害,但完全无用 - 为什么要在那里?!)。