我正在使用pexpect在一些输入文件上运行外部应用程序,我想将输出保存到日志文件中。我通常设法做到这一点,但这个应用程序运行迭代计算,当它超过约。我的输出被削减了20个周期。
我确信我的计算已经超过了这一点直到最后。
我的代码:
sys.stdout = open(logfile_path , 'a')
child = pexpect.run('app input_files' , logfile=sys.stdout , cwd=path_cwd)
还有更合适的方法吗,所以我可以保存所有输出?
答案 0 :(得分:0)
可能发生超时。检查退出状态,在这种情况下应该为非零。通过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