我可以运行(对于命令行)
myscript.py '--pm execute.shell(cmd="ls -l", nonInteractive=True)'
但是,假设我要调试myscript.py并将Edit Configurations Python对话框中的“Script parameters:”字段设置为:
--pm execute.shell(cmd="ls -l", nonInteractive=True)
它在“ls”和“-l”之间的空间处的barfs。有办法解决这个问题吗?使用“或”引号似乎不会这样做:
--pm 'execute.shell(cmd="ls -l", nonInteractive=True)'
--pm "execute.shell(cmd='ls -l', nonInteractive=True)"
在这两种情况下,引号都以参数结束。
更新: 运行:
import sys
for x in sys.argv:
print "<%s>"%(x,)
与
Script parameters: a \ b " c" "\ d" ' e' '\ f' "a 'b' \"c\""
给出:
<cmd.py>
<a>
<\>
<b>
< c>
<\ d>
<'>
<e'>
<'\>
<f'>
<a 'b' "c">
所以看起来像:
所以,神奇的答案是:
Script parameters: --pm "execute.shell(cmd='ls -l', nonInteractive=True)"
或
Script parameters: --pm "execute.shell(cmd=\"ls -l\", nonInteractive=True)"
答案 0 :(得分:1)
我对这个问题不是100%肯定。由于我没有评论特权,我将其作为答案撰写。
改变&#34; ls -l&#34;到&#34; ls- \ l&#34;应该工作,至少在* nix系统上。
相关文档/错误报告位于https://youtrack.jetbrains.com/issue/PY-4715和https://youtrack.jetbrains.com/issue/IDEA-72632,表明您需要使用系统相关方法转义空格,而不是使用通用方法。关于通用系统无关方法的提议显然被否定了。
编辑: - pm&#34; &#34; execute.shell(cmd = \&#34; ls&#34;&#34; -l \&#34;,&#34;&#34; nonInteractive = True)有效。