我有一个python脚本,该脚本在运行时会在终端上记录信息,我想将此记录信息发送到文本文件,
为了实现这一点,我正在插入文件
import subprocess subprocess.call(['script', 'logfile'])
在文件末尾,我放入
subprocess.call(['exit'])
问题是当它调用第一个命令时script logfile,它将终止脚本,
script logfile
提前感谢我如何做这项工作的任何建议
问题在于,subprocess.call直到script退出产生的外壳程序才返回,这时您的Python脚本将恢复。
subprocess.call
script
执行所需操作的最简单方法是script使用Python脚本作为参数来调用自身。代替
#!/usr/bin/python import subprocess subprocess.call(['script', 'logfile']) # Rest of your Python code subprocess.call(['exit'])
您将使用
#!/usr/bin/python import os import sys if '_underscript' not in os.environ: os.environ['_underscript'] = "yes" cmd_args = ['script', 'logfile', 'python'] + sys.argv os.execvp('script', cmd_args) # Rest of your Python code
环境变量可防止您的脚本进入无限循环以重新运行自身script。当您运行Python脚本时,它首先会在其环境中检查尚不存在的变量。如果没有,它将设置该变量,然后运行script以重新运行Python脚本。execvp用对的调用替换您的脚本script; Python脚本中没有其他内容可以执行。第二次脚本运行时,变量_underscript 确实 存在,这意味着将if跳过该块,并且脚本的其余部分将按预期运行。
execvp
_underscript
if