这是我的代码的简化版本。基本上我有一个通用格式的文件:
2 3 5
4 8 9
etc
对于n行,我必须将文件组织成字典。在此之前,我需要一个数据点之和,所以我先遍历文件以创建一个和,然后在第二个套件中再次遍历每一行,以创建一个嵌套的字典数据结构。但由于某种原因,第二套完全被忽略了。
这是一个简化版本,显然有些东西可以移动,但在真实文件中我确实需要两个独立的循环,因为其中一个值是基于文件中总和的百分比,只是完全在第一个for循环结束后定义。
file = open('file.txt', 'r')
dict = {}
for line in file:
v1, v2, v3 = file.split(' ')
sum += v1
for line in file:
v1, v2, v3 = file.split(' ')
key = v1
subkey = v2
ratio = v3/sum
value = ratio
dict[key] = [subkey],[value]
print(dict)
出于某种原因,这只是给出了
{}
这是采用字典的原始分配而忽略第二次迭代。如果我尝试在第二个套件中打印任何内容,例如v1,则会被忽略。如果我把它放在第一个for
循环中,它就可以了。
答案 0 :(得分:0)
您必须将文件处理程序“倒回”到文件的开头。
当您打开文件时,指针位于最开头。完成第一个for
循环后,指针位于文件的末尾。在第二个for
循环中,指针仍然在末尾,所以它什么都不做。
添加
file.seek(0)
在第二个for
循环之前,指针移回文件的开头,允许您从头开始再次读取文件。