我有下面一段老的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()
任何帮助都将不胜感激。你知道吗
右
首先,您最好使用list作为参数,因为您没有使用shell来执行程序:
然后需要调用
proc
对象上的communicate方法来获取stdin/stdout:就这样!你知道吗
注意:要使用python从标准输入中获取passwd,请查看^{} 模块。你知道吗
subprocess
时,您的调用可以是一个列表:cmd = ['/usr/bin/passwd', ' stdin', sys_user]
proc.communicate()
步骤。你知道吗相关问题 更多 >
编程相关推荐