python - Pycharm 忽略参数周围的三引号

标签 python cmd pycharm

采用以下脚本

import sys
for i in sys.argv:
    print(i)

我需要 sys.argv 来包含参数周围的引号。为此,当我在 Windows cmd 上执行此操作时,我会执行

python temp.py p1 p2 """p3"""

现在奇怪的事情是:

cmd 中的输出是

p1 p2 "p3"

这是正确的。

但是当我在 Pycharm 中执行它时,使用 p1 p2 """p3""", sys.argv[3] 填充 脚本参数 code> 在 p3 周围没有引号,并且控制台输出(在 Pycharm 内部)在 p3

周围也没有引号

p1 p2 p3

如何让 Pycharm 尊重参数周围的三引号?

PyCharm Community Edition 2017.2.3
Build #PC-172.3968.37, built on September 1, 2017
JRE: 1.8.0_152-release-915-b11 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0

最佳答案

这并不是字面上的 PyCharm 问题。这正是所有使用 sh、bash 或类似工具的类 Linux 系统的行为。

要在此处添加双引号,您必须使用单引号对每个引号进行转义:

python temp.py p1 p2 '"'p3'"'

如果您需要传递单引号,请使用双引号转义它们:

python temp.py p1 p2 "'"p3"'"

如果 p3 本身可以包含空格或特殊字符,则还必须使用单引号或双引号对其进行转义:

python temp.py p1 p2 "'""p3""'"
python temp.py p1 p2 "'"'p3'"'"

为了更清楚地说明,我会加上大括号,但这样行不通:

python temp.py p1 p2 ("'")("p3")("'")
python temp.py p1 p2 ("'")('p3')("'")

UPD:我错了。 PyCharm 不遵循 shell 中通常的脚本参数转义:cmd.exe 和 bash 都不是。它有自己的规则。根据official documentation ,您必须使用 \":

  • Use spaces to separate individual script parameters.
  • Script parameters containing spaces should be delimited with double quotes, for example, some" "param or "some param".
  • If script parameter includes double quotes, escape the double quotes with backslashes, for example: -s"main.snap_source_dirs=[\"pcomponents/src/main/python\"]" -s"http.cc_port=8189" -s"backdoor.port=9189"

所以会是:

python temp.py p1 p2 "\"p3\""

关于python - Pycharm 忽略参数周围的三引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46718951/

相关文章:

Python脚本递归打开目录中的.rar文件

Python 2.7 已弃用,我应该删除它吗?

python - 我该怎么做才能从 JetBrains 获得正常的 Python REPL

indexing - 为什么 PyCharm 对项目根目录之外的目录进行索引?

python - celery 中的导入错误

python - 休息 api 触发大厅管道/工作

python - python中列表的详尽组合

windows - 如何运行可以确定 cmd.exe 或 gnu mingw shell 是否正在运行的脚本

windows - 如何获取映射网络驱动器的驱动器号

java - 如果在 Windows Server 2016 上以非管理员身份运行,exit/b 0 在 process.exitValue 中返回 1