簡體   English   中英

python寫入文件異常發生

[英]python writing to file exception occurs

使用下面的代碼時出現“字符串索引必須是整數”錯誤。

global general_keys
general_keys = dict()
all_keys = {'activity': 'ins','install': 'all','aws.a': 'data', 'aws.b': 'data1', 'aws.c': 'data2'} 
general_key_array = ['install','db_manager', 'aws.']  

for key in general_key_array:
    for s in all_keys:
        if s.startswith(key):
            general_keys.update(dict(filter(lambda item: s in item[0], all_keys.items())))

文件寫入部分:

f.write("{0}{1}{2}".format("install=", general_keys['install']['install'], "\n"))
f.write("{0}{1}{2}".format("database_management_user=", general_keys['db_manager']['db_manager'], "\n"))
for key, value in general_keys['aws.'].items():
    f.write("{0}{1}{2}{3}".format(key, "=", value, "\n"))

預期輸出:

install=all
aws.a=data
aws.b=data1
aws.c=data2

在此處輸入圖片說明

您不是在創建嵌套字典。 您正在創建的general_keys的值是:

{'install': 'all', 'aws.a': 'data', 'aws.b': 'data1', 'aws.c': 'data2'}

要創建所需的嵌套字典,請使用。

from collections import defaultdict

general_keys = defaultdict(dict)
all_keys = {'activity': 'ins','install': 'all','aws.a': 'data', 'aws.b': 'data1', 'aws.c': 'data2'} 
general_key_array = ['install','db_manager', 'aws.']  

for key1 in general_key_array:
    for key2, value in all_keys.items():
        if key2.startswith(key1):
            general_keys[key1][key2] = value

print(dict(general_keys))

輸出:

{
    'install': {'install': 'all'}, 
    'aws.': {'aws.a': 'data', 'aws.b': 'data1', 'aws.c': 'data2'}
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM