我正在使用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
答案 0 :(得分:1)
我解决了。在将它传递给shlex.split之前我只将cmd转换为str,当你以这种方式收到一些输入时,这是很好的esp:
cmd = "sudo stop service/newservice db=" + db
更安全的做法是将其转换为字符串。