gpt4 book ai didi

python - 在Python中使用bash命令脚本

转载 作者:行者123 更新时间:2023-12-01 09:27:09 26 4
gpt4 key购买 nike

我有一个 python 脚本,运行时会在终端上记录信息,我想将此日志信息发送到文本文件,

为了在我插入的文件的开头实现这一点

import subprocess
subprocess.call(['script', 'logfile'])

在文件末尾,我输入了,

subprocess.call(['exit'])

问题是当它调用第一个命令脚本日志文件时,它会终止脚本,

任何关于如何完成这项工作的建议都会非常有帮助,提前致谢

最佳答案

问题是 subprocess.call 不会返回,直到 script 生成的 shell 退出,此时您的 Python 脚本将恢复。

执行您想要的操作的最简单方法是使用 Python 脚本作为参数来调用 script 本身。而不是

#!/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 block 将被跳过,脚本的其余部分将按预期运行。

关于python - 在Python中使用bash命令脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50288783/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com