[英]Unable to capture new lines from a console and save them into a text file
以下源代码应该从控制台捕获 output 并将其保存到文本文件中。
import sys
import subprocess
sys.stdout = open("my_app.txt", "w")
print(subprocess.check_output(
['./my_app',
'-length=7',
'-all',
'-file_names=tmpl.txt']
),
'\n'
)
sys.stdout.close()
以上源码预计output以下output:
1a62 A 4 THR H CCHHHHH 7.042 5.781 5.399 5.373 5.423 -9.118
1a62 A 5 GLU H CHHHHHC 5.781 5.399 5.373 5.423 5.247 5.488
1a62 A 6 LEU H HHHHHCC 5.399 5.373 5.423 5.247 5.485 5.166
但是,我收到以下 output:
1a62 A 4 THR H CCHHHHH 7.042 5.781 5.399 5.373 5.423 -9.118\n1a62 A 5 GLU H CHHHHHC 5.781 5.399 5.373 5.423 5.247 5.488\n1a62 A 6 LEU H HHHHHCC 5.399 5.373 5.423 5.247 5.485 5.166
换句话说, stdout
上的新行没有被正确识别/捕获/解析。
我该如何解决这个问题?
来自文档:
对于
stdin
,输入中的行结束字符'\n'
将被转换为默认的行分隔符os.linesep
。 对于stdout
和stderr
,output 中的所有行结尾都将转换为“\n”。 有关更多信息,请参阅io.TextIOWrapper
class 的文档,当其构造函数的换行参数为None
时。
从那以后,如果您使用 Python 3.7+,您应该添加text=True
参数,否则universal_newlines=True
。 文件。
print(subprocess.check_output([
'./my_app',
'-length=7',
'-all',
'-file_names=tmpl.txt'
], text=True),
'\n'
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.