我有以下文件和代码可以正常工作,但是(见下文)使用相同的方法,第二个代码片段与给定文件,会引发错误。
工作代码
def test():
with open('test.txt','r') as f:
reader=csv.reader(f)
for row in reader:
print(row[0]) #this is column 1
answer=input("Answer?>>")
if answer==row[1]: #this is column 2
print("Yes")
else:
print("No")
文件内容
a,1
b,2
c,3
纠正工作输出
>>> test()
a
Answer?>>1
Yes
b
Answer?>>2
Yes
c
Answer?>>
但是,以下代码不起作用:
def round():
print("===Summary===")
with open('eventinfo.txt','r',newline="") as f:
reader=csv.reader(f)
for row in reader:
print(row[0])
文件内容:(记录之间的额外线条似乎是在写入文件时创建的)
1,Techhamper,9,9,9,9,9,27
1,Moosecream,8,8,8,8,8,24
1,BizTech,6,6,6,6,6,18
1,Pigacheepot,1,1,1,1,1,3
2,Techhamper,1,1,1,1,1,3
2,Moosecream,2,2,2,2,2,6
错误:
print(row[0])
IndexError: list index out of range
写入此文件的代码如下:
with open("eventinfo.txt","a") as fo:
writer=csv.writer(fo)
writer.writerow([round,inventor,i1,i2,i3,i4,i5,totalscore])
如果有答案,我会很高兴:
从文件中读取的代码中的错误解决方案/修复程序(如何最有效地去除新行字符)
此外,添加或重写“写入”代码的最佳方法是什么,以便更有效地创建文件内容(就像第一个在每条记录之间没有换行符的内容)第一名。
提前致谢
答案 0 :(得分:1)
您可以通过查看row
:
for row in reader:
if len(row) > 0:
print(row[0])
我在编写代码中看不到会产生空白行的任何内容,所以我不知道如何解决这个问题。您是否正在使用您正在阅读的同一操作系统上书写?如果没有,可能是由于行结束约定的差异。
如果问题出在换行符上,您可以使用newline=None
(默认值)代替newline=""
修复阅读器代码。