以下源代碼應該從控制臺捕獲輸出并將其保存到文本檔案中。
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()
上面的源代碼預計會輸出以下輸出:
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
但是,我得到以下輸出:
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
沒有被正確識別/捕獲/決議。
我該如何解決這個問題?
uj5u.com熱心網友回復:
來自檔案:
對于
stdin
,輸入中的行結束字符'\n'
將被轉換為默認的行分隔符os.linesep
。對于stdout
andstderr
,輸出中的所有行尾都將轉換為 '\n'。有關更多資訊,請參閱io.TextIOWrapper
類的檔案,當其建構式的換行引數為None
.
因為text=True
如果您使用的是 Python 3.7 ,則應該添加引數,universal_newlines=True
否則。檔案。
print(subprocess.check_output([
'./my_app',
'-length=7',
'-all',
'-file_names=tmpl.txt'
], text=True),
'\n'
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/431391.html
下一篇:容器化Linux環境中的C :為什么嘗試分配大向量會導致SIGABRT或永無止境的回圈而不是bad_alloc?