将变量传递给子进程调用

rso*_*ard 31 python subprocess

我试图将我的变量传递raw_input给我的子进程命令.我是Python的新手.任何帮助他都会赞赏.

#!/usr/bin/python

import subprocess

print "\nWhat user name"
username = str(raw_input('username: '))
print "\nWhat is the user id"
userid = int(raw_input('Enter user id: '))
print "\nWhat is the user\'s primary group?"
primarygroup = int(raw_input('Enter group: '))
print "\nWhat is the user\'s secondary group?"
secondarygroup = int(raw_input('Enter group: '))

subprocess.call(['useradd' '-m' '-g' _primarygroup '-G' _secondarygroup '-u' _userid _username])

print"\nThe user has been added"
Run Code Online (Sandbox Code Playgroud)

Thi*_*ter 28

尝试用逗号分隔值:

subprocess.call(['useradd', '-m', '-g', _primarygroup, '-G', _secondarygroup, '-u', _userid, _username])
Run Code Online (Sandbox Code Playgroud)

请参阅http://docs.python.org/library/subprocess.html#subprocess.call - 它接受一个数组,其中第一个参数是程序,所有其他参数作为参数传递给程序.

另外,不要忘记检查函数的返回值是否为零返回代码,这意味着"成功",除非成功添加用户对您的脚本无关紧要.


mik*_*iku 7

尝试在列表项之间添加逗号:

subprocess.call(['useradd', '-m', '-g', _primarygroup, '-G', _secondarygroup, \
                 '-u' ,_userid, _username])
Run Code Online (Sandbox Code Playgroud)

subprocess.call采用与 相同的参数subprocess.Popen

args应该是一个字符串,或一系列程序参数。


编辑

要将所有参数一次转换为字符串,您可以使用列表理解:

args = ['useradd', '-m', '-g', _primarygroup, '-G', _secondarygroup, \
        '-u' ,_userid, _username]
str_args = [ str(x) for x in args ]
Run Code Online (Sandbox Code Playgroud)