重复使用一个子流程.python中的Popen实例



我正在用Python编写一个进程的脚本,在我的代码中,我使用p = subprocess.Popen(['example', 'command', 'and', 'args')进行了几个命令行调用。我最近遇到了一个问题,几个命令行调用需要sudo权限,因此用户最终不得不多次键入sudo密码,这是不希望的。有没有一种方法可以只生成一个shell实例,并在整个程序中重复使用它?即使从不同的类运行不同的命令,也能做到这一点吗?谢谢

对于具体性,假设您的程序如下所示:

import subprocess
import shlex
proc = subprocess.Popen(shlex.split('fdisk -l'))
proc.communicate()
proc = subprocess.Popen(shlex.split('fdisk -l'))
proc.communicate()

以普通用户身份运行它不会返回任何输出。

但是如果你运行

% sudo python /path/to/test.py

然后系统会提示您输入一次root密码,并且两个subprocess.Popen命令都以root身份运行。

最新更新