我正在尝试将8个JSON字典写入到一个JSON文件中,每个字典都类似于下面显示的格式。
{
"Category": {
"0": "PCoIP Session Gateway (PSG)",
"1": "Session Broker (PCM)",
"2": "Web Access TURN Servers for PCoIP"
},
"Domain or IP address": {
"0": "PCoIP Gateway Servers",
"1": "Domains: https://skylight-cm.us-east-1.amazonaws.com https://skylight-cm-fips.us-east-1.amazonaws.com https://skylight-cm.us-west-2.amazonaws.com https://skylight-cm-fips.us-west-2.amazonaws.com https://skylight-cm.ap-northeast-2.amazonaws.com https://skylight-cm.ap-southeast-1.amazonaws.com https://skylight-cm.ap-southeast-2.amazonaws.com https://skylight-cm.ap-northeast-1.amazonaws.com https://skylight-cm.ca-central-1.amazonaws.com https://skylight-cm.eu-central-1.amazonaws.com https://skylight-cm.eu-west-1.amazonaws.com https://skylight-cm.eu-west-2.amazonaws.com https://skylight-cm.sa-east-1.amazonaws.com https://skylight-cm.us-gov-west-1.amazonaws.com https://skylight-cm-fips.us-gov-west-1.amazonaws.com",
"2": "Servers: turn:*.us-east-1.rdn.amazonaws.com turn:*.us-west-2.rdn.amazonaws.com turn:*.ap-northeast-2.rdn.amazonaws.com turn:*.ap-southeast-1.rdn.amazonaws.com turn:*.ap-southeast-2.rdn.amazonaws.com turn:*.ap-northeast-1.rdn.amazonaws.com turn:*.ca-central-1.rdn.amazonaws.com turn:*.eu-central-1.rdn.amazonaws.com turn:*.eu-west-1.rdn.amazonaws.com turn:*.eu-west-2.rdn.amazonaws.com turn:*.sa-east-1.rdn.amazonaws.com"
}
}这是我目前的代码-
def export_to_json(df_domains_and_ip_addresses_to_add_to_your_allow_list \
, df_domains_and_ip_addresses_to_add_to_your_allow_list_for_pcoip \
, df_domains_and_ip_addresses_to_add_to_your_allow_list_for_workSpaces_streaming_protocol_wsp_beta \
, df_health_check_servers \
, df_pcoip_gateway_servers \
, df_ip_ranges \
, df_wsp_beta_gateway_servers \
, df_management_interface_ip_ranges):
dest_file_name = 'WORKSPACES_PORT_REQ_' + str(datetime.datetime.now().strftime('%Y_%m_%d_%H_%M_%S')) + '.json'
json_buffer = io.StringIO()
# Adding dict to json file
df_domains_and_ip_addresses_to_add_to_your_allow_list.to_json(json_buffer)
my_bucket.put_object(Key=dest_file_name, Body=json_buffer.getvalue())这段代码当前将一个字典添加到JSON文件中,如何将所有其他字典(作为参数传递给此函数)添加到相同的JSON文件中。
发布于 2021-01-27 16:48:57
您希望输出文件的格式是{...} (将所有文件的内容合并到一个字典中)还是[{...}, {...} ...] (每个文件都是一个列表元素)?
根据您的目标:
import json
# --- FORMAT: {...} --- #
result1 = {}
# your input dictionaries
for dct in dicts:
# combine the dictionaries
# if there are duplicate keys, the ones in 'dct' will overwrite those already in 'result'
result1 = {**result1, **dct}
# write the output file
with open('result1.json', 'w') as outfile:
json.dump(result1 , outfile, indent=2)
# --- FORMAT: [{...}, {...} ...] --- #
result2 = []
# your input dictionaries
for dct in dicts:
# append the dictionary to the list
result2.append(dct)
# write the output file
with open('result2.json', 'w') as outfile:
json.dump(result2, outfile, indent=2) 上面给出了两个不同的输出文件,具体取决于所需的格式。
编辑:要获得列表中的输入dfs,可以在函数中使用locals().keys()。所以你可以做像for df in locals().keys(): ...这样的事情
把所有这些放在一起:
def export_to_json(df_domains_and_ip_addresses_to_add_to_your_allow_list \
, df_domains_and_ip_addresses_to_add_to_your_allow_list_for_pcoip \
, df_domains_and_ip_addresses_to_add_to_your_allow_list_for_workSpaces_streaming_protocol_wsp_beta \
, df_health_check_servers \
, df_pcoip_gateway_servers \
, df_ip_ranges \
, df_wsp_beta_gateway_servers \
, df_management_interface_ip_ranges):
dest_file_name = 'WORKSPACES_PORT_REQ_' + str(datetime.datetime.now().strftime('%Y_%m_%d_%H_%M_%S')) + '.json'
json_buffer = io.StringIO()
result = {}
dfs = locals().keys()
for df in dfs:
result = {**result, **df}
# Adding dict to json file
result.to_json(json_buffer)
my_bucket.put_object(Key=dest_file_name, Body=json_buffer.getvalue())https://stackoverflow.com/questions/65914919
复制相似问题