python子进程给出了typeerror

时间:2013-11-20 09:15:42

标签: python python-2.7 subprocess

我正在使用python 2.7

cmd = "sudo start service/newservice db=temp"
p = subprocess.Popen(shlex.split(cmd), stderr=subprocess.STDOUT)

以上命令工作正常,并且产生了有意的过程。

cmd = "sudo stop service/newservice db=temp"
p = subprocess.Popen(shlex.split(cmd), stderr=subprocess.STDOUT)

在调用上述内容的同一文件中。它给出了错误。

traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/lib/python2.7/subprocess.py", line 672, in __init__
        errread, errwrite)
      File "/usr/lib/python2.7/subprocess.py", line 1213, in _execute_child
        raise child_exception
    TypeError: must be encoded string without NULL bytes, not str

1 个答案:

答案 0 :(得分:1)

我解决了。在将它传递给shlex.split之前我只将cmd转换为str,当你以这种方式收到一些输入时,这是很好的esp:

cmd = "sudo stop service/newservice db=" + db

更安全的做法是将其转换为字符串。