【发布时间】:2018-12-08 00:43:03
【问题描述】:
我正在尝试使用 python 向另一个应用程序发出命令,但它似乎只承认命令的一部分。以下是有问题的代码行:
command = 'potreeconverter {} -q NICE -p {} –o {}\{}\{}\{}'.format(path,folder,pathup[0],cid,wpid,folder)
print (command)
os.system(command)
我对 Python 还很陌生,所以如果这是为包含许多变量的目录名称构造字符串的奇怪方式,请原谅我。但是,打印功能总是返回我想要的确切命令,如果我只是手动将其复制并粘贴到命令提示符中,它将按预期运行。
potreeconverter C:\Users\thomas\source\test.las -q NICE -p test –o C:\Users\thomas\source\55555\55555\test
该命令被应用程序接受,但它忽略 -o 参数,该参数指定应用程序的输出目录。如果我使用 subprocess.call,它会做同样的事情。该命令的任何其他部分都不会被忽略。
我读到这个问题可以通过让 python 将命令写入批处理文件,然后发送批处理文件来解决。我真的不想这样做,因为它效率很低。还有其他人知道的方法可以避免这种情况吗?
另外,我不确定这意味着什么,但我认为这很奇怪,也许很重要。当出现这个问题,并且只有出现这个问题时,程序选择的默认输出目录而不是我指定的那个,才会使用正斜杠而不是反斜杠。
【问题讨论】:
-
os.system()的返回值是多少? -
我将命令设置为变量并打印它,它返回 0
-
如果它返回零,那么它似乎有工作。你需要看看
potreeconverter,比如你有多个版本吗?potreeconverter是否接受带有 \ 目录分隔符的文件路径?顺便说一句,/在 Windows 上工作,这可能值得一试。 -
是的,正斜杠在大多数情况下都可以在 Windows 上使用,但我相信在一些较旧的程序中除外。我会尝试这样做,并确保周围没有可能不同版本的 potreeconverter,python 可能首先看到的版本是不正确的。
标签: python subprocess os.system