我想使用python
在linux上运行一个带有args的命令我有以下代码:
import subprocess
msg = 'this is commit'
cmdtorun = 'hg commit -m "{}"'.format(msg)
try:
subprocess.check_output(cmdtorun, shell=True)
print "commit done"
except subprocess.CalledProcessError:
print "commit failed
但是这给了我错误。
答案 0 :(得分:2)
最有可能的是,你的问题完全不同。检查你实际得到的错误。我猜你在错误的目录中执行hg
(传递cwd=
关键字参数)。
此外,您使用'"{}"'.format
进行转义不正确 - 当msg
包含双引号时失败。您可以使用shlex.quote
进行转义,但这很容易出错。让子进程执行转义要容易得多:
import subprocess
msg = 'this is commit'
try:
subprocess.check_output(['hg', 'commit', '-m', msg])
print("commit done")
except subprocess.CalledProcessError as cpe:
print("commit failed: %r" % cpe)