无法使用path在子进程中启动exec

时间:2017-09-11 09:45:33

标签: python subprocess

我正在尝试从python子进程启动一个可执行文件,但我遇到了路径问题。 我正在尝试运行位于

中的newman.cmd
C:\Users\<myself>\AppData\Roaming\npm

我试试

subprocess.run("C:\Users\<myself>AppData\Roaming\npm\newman.cmd run","shell=True")

失败,表示:

Syntax Error: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape: C:\knxnet\test_differentiel.py, line 71, pos 23
subprocess.run("C:\Users\<myself>\AppData\Roaming\npm\newman.cmd run","shell=True")

如果我在本地路径中复制newman.cmd和相应的文件夹,我最终会按预期启动命令,即。这有效:

subprocess.run("newman.cmd -h")

我检查了路径,它给了我以下内容:

ENV =  <irrelevant info> ;C:\Users\<myself>\AppData\Roaming\npm

所以我虽然会找到它?如何避免在当前目录中复制可执行文件?

感谢您的帮助...

1 个答案:

答案 0 :(得分:0)

嗯,我找到了答案,感谢SO ... "Unicode Error "unicodeescape" codec can't decode bytes... Cannot open text files in Python 3

它被解释为unicode后跟一个不需要的字符......错误中指示的位置是引用的位置,所以我没有抓住提示。 所以我试着用r:

subprocess.run(r"C:\Users\a.joly\AppData\Roaming\npm\newman.cmd -h")

它有效。如果我将“\”加倍,它也有效。

谢谢你的时间......