我有以下一段旧的python代码。
cmd = '/usr/bin/passwd --stdin %s' % sys_user
(pin, pout) = os.popen2(cmd)
pin.write(password)
pin.close()
pout.read()
pout.close()
我没有写。原来程序员早已不复存在。 zip文档旁边是文档。 不推荐使用open2。
那么如何设法转换为使用子进程?我不是一个python程序员,但可以解决问题。
这段代码不起作用,但我显然遗漏了一些东西。
cmd = '/usr/bin/passwd --stdin %s' % sys_user
proc = subprocess.Popen(cmd, stdin=subprocess.PIPE,stdout=subprocess.PIPE)
proc.stdin.write(password)
proc.stdin.close()
proc.stdout.read()
proc.stdout.close()
非常感谢任何帮助。
[R
答案 0 :(得分:0)
subprocess
时,您的通话可以是一个列表:cmd = ['/usr/bin/passwd', '--stdin', sys_user]
proc.communicate()
步骤。答案 1 :(得分:0)
首先,您最好使用列表作为参数,因为您没有使用shell来执行程序:
cmd = ['/usr/bin/passwd', '--stdin', sys_user]
proc = subprocess.Popen(cmd, stdin=subprocess.PIPE,stdout=subprocess.PIPE)
然后你需要调用proc
对象上的communication方法来获取stdin / stdout:
out, err = proc.communicate(password)
for l in out.split('\n'):
print out
然后你去!
N.B。:要使用python从标准输入获取passwd,请查看getpass
模块。