无法在Python中将第二行添加到字典中

时间:2016-11-30 10:19:53

标签: python python-2.7

我是Python脚本的新手。有一个文件包含

下面的数据
Cascade.from = testvalue1 
cascade.from1 = testvalue2

上面的上下文是在test.txt中。我已经编写了一个下面的代码,以便将其放入字典中并稍后获取代码,如下所示

myvalue = {}
with open('test.txt', 'r') as myfile:
    for line in myfile:
        name, val = line.split('=')
        myvalue[name] = str(val.strip())
        print myvalue

运行上面的代码后,我只看到下面的数据 {"cascade.from": "testvalue1"} 它不是在读下一行,而是没有被添加到字典中。 我的期望是:{"cascade.from": "testvalue1", "cascade.from1": "testvalue2"}。因此,当致电myvalue["cascade.from1"]时,它应该返回testvalue2 谁能让我知道这里缺少什么?

以上只是函数内部的一小部分,这是我的代码完整的东西

def readlocalfile():
        os.chdir(sub_dir)
        print ("prinintng current directory" + os.getcwd())
        file = open(config_file,'r')
        file_read = file.readlines()
        myvars = {}
        with open(config_file) as myfile:
             for line in myfile:
                   name, var = line.split("=")
                   myvars[name] = str(var.strip())
                   print myvars
                   replace_val = myvars["cascade.from1"]
                   print ("the base value is "+ replace_val)

Iam在外部调用此函数,抛出KeyError

1 个答案:

答案 0 :(得分:3)

第一次在循环中,您正在尝试阅读

myvars["cascade.from1"]

但是第一次在循环中键cascade.from1不存在,因为你只加载了Cascade.from的第一行(第二次创建了键cascade.from1在循环中)这就是为什么你得到一个错误,你的程序第一次在行replace_val= myvars["cascade.from1"]处崩溃。因此print myvars仅在循环中第一次运行,此时您只读取了文件中的第一行。

使用

replace_val= myvars["cascade.from1"]

你必须将它移到循环之外,因为ince myvars第一次在循环中不包含键cascade.from1

def readlocalfile():
    os.chdir(sub_dir)
    print ("prinintng current directory" + os.getcwd())
    file=open(config_file,'r')
    file_read=file.readlines()
    myvars = {}
    with open(config_file) as myfile:
        for line in myfile:
            name, var = line.split("=")
            myvars[name] = str(var.strip())
            print myvars
        replace_val= myvars["cascade.from1"]
        print ("the base value is "+ replace_val)