簡體   English   中英

使用sys.stdout將輸出從pexpect保存到文本文件

[英]Saving output from pexpect to a text file with sys.stdout

我正在使用pexpect在某些輸入文件上運行外部應用程序,我想將輸出保存到日志文件中。 我通常設法做到這一點,但是此應用程序會運行迭代計算,並且當它的計算結果超過大約時。 我的輸出被削減了20個周期。

我確信我的計算已經超過了這一點,直到最后。

我的代碼:

sys.stdout = open(logfile_path , 'a') child = pexpect.run('app input_files' , logfile=sys.stdout , cwd=path_cwd)

有沒有更合適的方法可以做到這一點,所以我可以保存所有輸出?

也許發生超時。 檢查退出狀態,在這種情況下應為非零值。 通過timeout=None禁用超時,通過withexitstatus=True獲得退出狀態:

#!/usr/bin/env python
import subprocess
import sys
import pexpect  # $ pip install pexpect

N = 10**7
command = [sys.executable, '-c', r"print('\n'*%d)" % N]
subprocess_output = subprocess.check_output(command, universal_newlines=True)
assert len(subprocess_output) == (N + 1), repr(subprocess_output[:30])
output, status = pexpect.runu(command[0], args=command[1:], withexitstatus=1,
                              timeout=None)
assert not status, (status, repr(output.strip()))
print(repr(output[:30]))
assert subprocess_output.splitlines() == output.splitlines()
assert len(output) == 2*(N + 1) # \n -> \r\n

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM