Python 3.4 3中的数据组织
在Python中,我使用这个文件Criteria.txt,它看起来像这样Python 3.4 3中的数据组织,python,Python,在Python中,我使用这个文件Criteria.txt,它看起来像这样 Homework,5,10,10 Quiz,3,20,20 Midterm,1,50,30 Final,1,100,40 我输入了这段代码来打开和操作Criteria.txt文件 criteria=open('Criteria.txt','r') criteria_line=criteria.readline() for criteria_line in criteria: print (crit
Homework,5,10,10
Quiz,3,20,20
Midterm,1,50,30
Final,1,100,40
我输入了这段代码来打开和操作Criteria.txt文件
criteria=open('Criteria.txt','r')
criteria_line=criteria.readline()
for criteria_line in criteria:
print (criteria_line),
criteria_myline = criteria_line.strip().split(',')
print ("Assignment Type: "+criteria_myline[0])
print ("Number: "+ criteria_myline [1])
print ("Points: "+ criteria_myline [2])
print ("Weight: "+ criteria_myline [3])
print ()
结果是这样
(None,)
Assignment Type: Quiz
Number: 3
Points: 20
Weight: 20
Midterm,1,50,30
(None,)
Assignment Type: Midterm
Number: 1
Points: 50
Weight: 30
Final,1,100,40
(None,)
Assignment Type: Final
Number: 1
Points: 100
Weight: 40
这一切都是正确的,只是作业没有出现。您可以在Criteria.txt
文件中看到,家庭作业是列表中的第一种作业类型。这个代码有什么问题?为什么不写作业 线路
criteria_line=criteria.readline()
阅读第一行,其中包含作业。在以下for
循环中,您立即放弃第一个结果。行
criteria_line=criteria.readline()
阅读第一行,其中包含作业。在下面的for
循环中,您将立即放弃第一个结果。发生这种情况是因为您在for循环开始之前读取了文件的第一行。这会导致文件对象中的光标移动到下一行,因此当您在criteria
中迭代criteria\u行时,您将排除第一行(包含作业的那一行)。如果你拆下这条线
criteria_line = criteria.readline()
它应该会起作用
这一切都是有效的,因为文件对象是iterable,默认情况下python将在文件中的行上迭代。发生这种情况是因为您在for循环开始之前读取了文件的第一行。这会导致文件对象中的光标移动到下一行,因此当您在criteria
中迭代criteria\u行时,您将排除第一行(包含作业的那一行)。如果你拆下这条线
criteria_line = criteria.readline()
它应该会起作用
这一切都是有效的,因为文件对象是一个iterable,默认情况下python将在文件中的行上迭代。当您criteria\u line=criteria.readline()
时,您已经从文件对象criteria
中使用了一行,即作业,5,10,10
,修复方法是在需要时读取for
循环中的数据,并作为旁注使用和
上下文打开文件,以实现更好、更安全的编码:
with open('Criteria.txt') as criteria
for criteria_line in criteria:
#print (criteria_line) #for debugging
criteria_myline = criteria_line.strip().split(',')
print ("Assignment Type: "+criteria_myline[0])
print ("Number: "+ criteria_myline [1])
print ("Points: "+ criteria_myline [2])
print ("Weight: "+ criteria_myline [3])
print ()
当您criteria\u line=criteria.readline()
时,您已经从文件对象criteria
中消耗了一行,这是作业,5,10,10
,修复方法是在需要for
循环的数据时读取,并作为旁注,使用with
上下文打开文件以获得更好更安全的编码:
with open('Criteria.txt') as criteria
for criteria_line in criteria:
#print (criteria_line) #for debugging
criteria_myline = criteria_line.strip().split(',')
print ("Assignment Type: "+criteria_myline[0])
print ("Number: "+ criteria_myline [1])
print ("Points: "+ criteria_myline [2])
print ("Weight: "+ criteria_myline [3])
print ()
杰出的非常感谢。杰出的非常感谢。