这可能只是Windows Powershell中的语法错误,但我无法运行具有特定python版本的python脚本(我有两个安装)。
我有一个批处理文件,其中以下命令有效:
"C:\Program Files\QGIS 2.18\bin\python.exe" myscript.py
但是如果我在包含python脚本的文件夹中打开PowerShell,我会收到错误:
At line:1 char:45
+ ... C:\Program Files\QGIS 2.18\bin\python.exe" myscript.py
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
Unexpected token 'myscript.py' in expression or statement.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : UnexpectedToken
我也试过没有双引号,单引号,并指定了python脚本的路径:
"C:\Program Files\QGIS 2.18\bin\python.exe" C:\mydata\myscript.py
两部分都有引号:
"C:\Program Files\QGIS 2.18\bin\python.exe" "C:\mydata\myscript.py"
但有类似的错误。
编写此命令的正确方法是什么?
答案 0 :(得分:2)
使用&
Call operator or .
Dot sourcing operator如下(选择一个):
. "C:\Program Files\QGIS 2.18\bin\python.exe" "C:\mydata\myscript.py"
& "C:\Program Files\QGIS 2.18\bin\python.exe" "C:\mydata\myscript.py"
. "C:\Program Files\QGIS 2.18\bin\python.exe" "myscript.py"
& "C:\Program Files\QGIS 2.18\bin\python.exe" "myscript.py"
<强>解释强>:
在Powershell中,行{}处的"a string"
表示与Write-Output "a string"
相同(请参阅Write-Output
cmdlet documentation中的示例1 )。因此,在第一个例子中"C:\Program Files\QGIS 2.18\bin\python.exe" myscript.py
"C:\Program Files\QGIS 2.18\bin\python.exe"
= string 类型的第一个标记
Write-Output
的{{1}}的位置参数,即PS对象的数组(0
)和PSObject[]
=意外的令牌。