我是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
答案 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)