Python 创建文本文件不解析换行符
我刚开始学习Python,正在写一个脚本,这个脚本会运行valgrind,并处理文件夹里的所有二进制文件,抓取输出结果,并在需要检查结果时创建一个文本文件。我的问题是,我能获取到输出,但当我打印它或者写入一个新文件时,\n这个字符没有被正确识别,显示成两个字符,而不是应该换行的效果。
我如何抓取输出
proc.append(subprocess.Popen(
['valgrind','--track-origins=yes','--leak-check=full',''.join(['./',files[i]])],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
universal_newlines=True,
shell=False,
))
print '--> valgrind on', files[i]
stdout_value.append(proc[j].communicate())
我如何写入新文件
file = open(''.join([os.getcwd(),'/valgrind_output_dir/',result4.group(1),'_output.txt']), "w")
file.write(str(stdout_value[i]))
谢谢你告诉我我哪里做错了!
1 个回答
0
试试这个:
import subprocess
with open("file", "wb") as new_file:
proc = []
proc.append(subprocess.Popen(
["ls", "-l"],
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
universal_newlines=True,
shell=False,
))
new_file.write(proc[0].communicate()[0])
可能的问题是:proc[0].communicate() => (文本, 无)
Popen.communicate(input=None)
这个方法是用来和一个正在运行的程序进行互动的:你可以给它发送数据,读取它的输出和错误信息,直到程序结束。
它会等这个程序执行完毕。你可以选择性地给它一个输入参数,这个参数应该是你想发送给子程序的字符串,如果不想发送任何数据,就可以用None。
communicate() 方法会返回一个元组 (标准输出数据, 错误输出数据)。