Pycharm 删除参数字段中的引号

问题描述

我想通过使用 PyCharm 中的参数字段为 python 脚本设置参数。

我的配置:

enter image description here

但是运行控制台中的命令是:

python3 path_to_script.py '{app_id: picoballoon_network,dev_id: ferdinand_8c ... and so on

而不是:

python3 path_to_script.py '{"app_id": "picoballoon_network","dev_id": "ferdinand_8c" ... and so on

基本上,它会删除参数中的所有 "。 有谁知道如何关闭它?

我的 PyCharm 版本是:

PyCharm 2020.3.1 (Professional Edition)
Build #PY-203.6682.86,built on January 4,2021
Runtime version: 11.0.9.1+11-b1145.37 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 10 10.0

解决方法

为避免删除引号,请注意包含引号的参数的编写规则。

运行/调试配置:Python

Configuration tab

指定脚本参数时,请遵循以下规则:

  • 使用空格分隔各个脚本参数。

  • 包含空格的脚本参数应该用双引号分隔,例如,some" "param"some param"

  • 如果脚本参数包含双引号,用反斜杠转义双引号,例如:

-s"main.snap_source_dirs=[\"pcomponents/src/main/python\"]" -s"http.cc_port=8189"
-s"backdoor.port=9189"
-s"main.metadata={\"location\": \"B\",\"language\": \"python\",\"platform\": \"unix\"}"

问题中的情况是单个参数,让我们将规则应用于示例:

'{"app_id": "picoballoon_network","dev_id": "ferdinand_8c"'

  1. 因为它是一个包含空格的单个参数,所以必须用引号括起来。

  2. 由于参数的内容也包含引号,因此必须使用反斜杠 \ 对其进行转义。所以应用参数格式规则给出:

"'{\"app_id\": \"picoballoon_network\",\"dev_id\": \"ferdinand_8c\"}'"

  1. (旁注):在示例中,参数被 Apostrophes 包围,这可能是不必要的,并且可能必须稍后在您的 Python 代码中删除(下面的示例使用strip 方法)。

您可以使用这个简单的脚本对其进行测试:

import sys
import ast


your_dictionary = ast.literal_eval(sys.argv[1].strip("'"))

(旁注):您的示例参数是一个包含 Python dictionary 的字符串,有多种方法可以转换它,在示例中我包含了这个问题中投票最高的答案: "Convert a String representation of a Dictionary to a dictionary?"

显示正在使用的参数和测试代码的屏幕截图:

enter image description here