Python脚本与linux sh的交互

2024-10-16 20:52:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Python脚本,需要通过命令行与用户交互,同时记录输出的内容。

我现在有这个:

# lots of code

popen = subprocess.Popen(
    args,
    shell=True,
    stdin=sys.stdin,
    stdout=sys.stdout,
    stderr=sys.stdout,
    executable='/bin/bash')

popen.communicate()

# more code

它执行一个shell命令(例如adduser newuser02),就像在终端中输入命令一样,包括交互行为。这很好。

现在,我想从Python脚本中记录屏幕上显示的所有内容。但我似乎不能让那部分发挥作用。

我尝试过使用subprocess.PIPE的各种方法,但这通常会扰乱交互,比如不输出提示字符串。

我还尝试了各种方法来直接更改sys.stdout的行为,但是当subprocess直接写入sys.stdout.fileno()时,这一切都没有用。


Tags: 方法命令行用户命令脚本内容stdinstdout