在python中更新字典,如何从用户那里获得输入?

时间:2014-05-21 13:14:14

标签: python

我想用db_host替换密钥(即addons_path$$$$)的值。密钥和值都应由用户提供。

我的功能应该提出两个问题:

  1. 您要更新哪个密钥?
  2. 您要更新哪个值?
  3. 如果用户说key = db_hostvalue = $$$$$,则应该在文本文件中更新该值。

    输入文本文件包含以下内容:

    #Test.txt#
    addons_path=/bin/root
    
    admin_passwd = abctest
    
    auto_reload = False
    
    csv_internal_sep = ,
    
    db_host = 90.0.0.1
    

    更新了文字文件:

    #Test.txt#
    admin_passwd = abctest
    
    auto_reload = False
    
    csv_internal_sep = ,
    
    db_host = $$$$$
    

    我想替换特定键的值并将其写入文件,而不是用新文件替换旧文件。

    以下函数为我提供了替换文件中值的正确输出。如何通过用户输入更改它?

    def replace_in_file(filename, key, new_value):
        f = open('/Files/test2', "r")
        lines = f.readlines()
        f.close()
        for i, line in enumerate(lines):
            if line.split('=')[0].strip(' \n') == key:
                lines[i] = key + ' = ' + new_value + '\n'
        f = open('Files/test2', "w")
        f.write("".join(lines))
        f.close()
    
    replace_in_file("file.txt", 'db_host', "22222")
    

2 个答案:

答案 0 :(得分:2)

如果我理解得很好,你就需要这个:

key = raw_input("which key you want to update? : ")
value = raw_input("Which value you want to update? : ")

程序将在每种情况下等待用户输入。 然后'key'和'value'变量将包含用户给出的值......

答案 1 :(得分:0)

这可能有用!

def replace_in_file(filename, key, new_value):
    f = open('/home/tactix4/Pictures/Ami/Files/tactix4_replace_key/test2', "r")
    lines = f.readlines()
    f.close()
    for i, line in enumerate(lines):
        if line.split('=')[0].strip(' \n') == key:
           lines[i] = key + ' = ' + new_value + '\n'
    f = open('/home/tactix4/Pictures/Ami/Files/tactix4_replace_key/test2', "w")
    f.write("".join(lines))
    f.close()

replace_in_file("test2", key, value)

key = raw_input("which key you want to update? : ")
value = raw_input("Which value you want to update? : ")