use*_*956 5 python intellij-idea
我可以运行(对于命令行)
myscript.py '--pm execute.shell(cmd="ls -l", nonInteractive=True)'
Run Code Online (Sandbox Code Playgroud)
但是,假设我要调试 myscript.py 并将“编辑配置 Python”对话框中的“脚本参数:”字段设置为:
--pm execute.shell(cmd="ls -l", nonInteractive=True)
Run Code Online (Sandbox Code Playgroud)
它在“ls”和“-l”之间的空格处呕吐。有没有办法解决这个问题?使用 ' 或 " 引号似乎不是这样做的:
--pm 'execute.shell(cmd="ls -l", nonInteractive=True)'
--pm "execute.shell(cmd='ls -l', nonInteractive=True)"
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,引号都以参数结尾。
更新:运行:
import sys
for x in sys.argv:
print "<%s>"%(x,)
Run Code Online (Sandbox Code Playgroud)
和
Script parameters: a \ b " c" "\ d" ' e' '\ f' "a 'b' \"c\""
Run Code Online (Sandbox Code Playgroud)
给出:
<cmd.py>
<a>
<\>
<b>
< c>
<\ d>
<'>
<e'>
<'\>
<f'>
<a 'b' "c">
Run Code Online (Sandbox Code Playgroud)
所以它看起来像:
所以,神奇的答案是:
Script parameters: --pm "execute.shell(cmd='ls -l', nonInteractive=True)"
Run Code Online (Sandbox Code Playgroud)
或者
Script parameters: --pm "execute.shell(cmd=\"ls -l\", nonInteractive=True)"
Run Code Online (Sandbox Code Playgroud)
我对这个问题不是100%确定。由于我没有评论权限,所以我将其写为答案。
将“ls -l”更改为“ls-\ l”应该可以工作,至少在 *nix 系统上是这样。
相关文档/错误报告位于https://youtrack.jetbrains.com/issue/PY-4715和https://youtrack.jetbrains.com/issue/IDEA-72632,其中指出您需要使用系统依赖来转义空间方法,而不是使用通用方法。通用系统独立方法的提议显然被拒绝了。
编辑: --pm" "execute.shell(cmd=\"ls" "-l\"," "nonInteractive=True) 有效。
| 归档时间: |
|
| 查看次数: |
2725 次 |
| 最近记录: |