python - 以特定格式转储 JSON 的内容
问题描述
我需要使用以下格式的 Python scipt 文件实际创建一个 Windows INI:
AGENTIP = 1.2.3.4,
VARFILE = C:\Users\output\temp.out
INFOFILE= C:\Users\output\info.out
SYNTEST = Run:Level1/Get
CMDMODE = RUNTESTSUITE
下面是我的 Python 代码,其中我有 JSON 字符串中的数据,然后将内容转储到文件中:
def change_test_details(self, ver, level, grp):
data = {"AGENTIP" : "1.2.3.4", "VARFILE" : "C:\\Users\\output\\temp.out", "INFOFILE" : "C:\\Users\\output\\info.out", "SYNTEST" :"Run:Level1/Get", "CMDMODE" :"RUNTESTSUITE"}
data["SYNTEST"] = ver + ":" + level + "/" + grp
with open("a.txt", 'w') as outfile:
json.dump(data, outfile,indent=2)
当使用以下参数调用该方法时:
“BETA” “Level5” “套装”
如果文件是最终输出
{
"AGENTIP": "1.2.3.4",
"VARFILE": "C:\\Users\\output\\temp.out",
"INFOFILE": "C:\\Users\\output\\info.out",
"SYNTEST": "\"BETA\":\"Level5\"/\"Set\"",
"CMDMODE": "RUNTESTSUITE"
}
有 '{ .. }' 大括号和额外的双引号和 '\' 并且 SYNTEST 的预期值应该是BETA:Level5/Set?
如何将 JSON 字符串更改为所需格式?
解决方案
json.dump()将对象打印为 json 格式的字符串。因此,当您将其转储到 outfile 中时,您会在文件中获得一个 json 字符串,这就是它应该表现的方式。
您想要的是迭代项目并根据您想要的格式打印它们。
def change_test_details(ver, level, grp):
data = {"AGENTIP" : "1.2.3.4", "VARFILE" : "C:\\Users\\output\\temp.out", "INFOFILE" : "C:\\Users\\output\\info.out", "SYNTEST" :"Run:Level1/Get", "CMDMODE" :"RUNTESTSUITE"}
data["SYNTEST"] = ver + ":" + level + "/" + grp
with open("a.txt", 'w') as outfile:
for k, v in data.items():
outfile.write(f'{k} = {v}\n')
change_test_details("BETA", "Level5","Set")
当你运行它时,a.txt 看起来像:
AGENTIP = 1.2.3.4
VARFILE = C:\Users\output\temp.out
INFOFILE = C:\Users\output\info.out
SYNTEST = BETA:Level5/Set
CMDMODE = RUNTESTSUITE
推荐阅读
- reactjs - 在 antd Table 中,能不能结合 Pagination 和 Footer somhow?
- ios - 如何打印轨迹数据(swift)
- php - 如何使用 .htaccess 文件从服务器和本地主机上的 URL 中删除 .php 扩展名?
- git - 如何使用 Git 确定(前导)空格的差异
- javascript - 无法管理拖放图片
- firebase - firebase auth 在微服务之间共享会话/令牌
- laravel - 尚未设置外观根
- javascript - 数据没有从 Angular 中的组件传递
- python - 如何修复 AttributeError:“NoneType”对象没有使用 smtplib 的属性“encode”
- javascript - 如何使用按钮更改嵌入源?