这里有点束缚。我正在尝试将名为DATA的字典转储到json文件中。我在这本词典中有几个键,其中一个称为选项。我正在用Windows环境变量填充此词典,尽管那不要紧。这是我的代码:
TOOL = sys.argv[1]
TARGET = sys.argv[2]
HASH = sys.argv[3]
TESTCASE = sys.argv[4]
OPTIONS = sys.argv[5]
DATA = {'test': TOOL.replace("'", ""), 'target': TARGET.replace("'", ""),
'HASH': HASH.replace("'", ""),
'options': OPTIONS.replace("'", ""),
'TESTCASE_EXECUTIONRECORD_NAME': TESTCASE.replace("'", "")}
def write_to_json():
"""Serialize cli args and tool options in json format.
Write stream to json file.
"""
with open(r'C:\Users\tommy12\PycharmProjects\SomethingNew\envs.json',
'w') as json_file:
json.dump(DATA, json_file)
write_to_json()
我将使用以下命令运行程序
python jsonprogram.py %TOOL% %TARGET% 434999 test %OPTIONS%
以下是环境变量tool = 'nmap', target = 'scanme.nmap.org' and options = '-cA "-sS -p1-1000 "'
所有内容都会正确格式化选项。对于我的json选项值,我将只有-cA。我尝试在不同的地方使用引号,但没有任何帮助。有人知道如何保持选择权不变吗?我需要将选项格式设置为-cA“ -sS -p-1000”,并在其后的空格后面加上1000。双引号也是必需的。
答案 0 :(得分:1)
双引号中的环境变量应保留空格(我在linux中对其进行了测试,并且可以正常工作):
python jsonprogram.py "%TOOL%" "%TARGET%" 434999 test "%OPTIONS%"
另一个答案(https://stackoverflow.com/a/1851129/10026557)似乎可以证实。
答案 1 :(得分:0)
我不确定这是否是您问题的完美答案,但是我对输入内容进行了简单的更改,但它确实有效。 原始输入
python test.py nmap scanme.nmap.org 434999 cA "-sS -p1-1000 "
更改输入
python test.py 'nmap' 'scanme.nmap.org' '434999' 'test' 'cA "-sS -p1-1000 "'