Python 在For循环中丢失一行文本文件
每次我读一行时,For循环都会跳过第一行。 当我只需要将整个文件读入内存时,问题不会出现,但大多数情况下,我需要一次读入一行 下面是出现问题的一个示例。 这个循环只是对列表中的元素重新排序。 我省略了打开和关闭读写文件的行(我这样做很笨拙)。它的所有文本数据都是逗号分隔的Python 在For循环中丢失一行文本文件,python,Python,每次我读一行时,For循环都会跳过第一行。 当我只需要将整个文件读入内存时,问题不会出现,但大多数情况下,我需要一次读入一行 下面是出现问题的一个示例。 这个循环只是对列表中的元素重新排序。 我省略了打开和关闭读写文件的行(我这样做很笨拙)。它的所有文本数据都是逗号分隔的 lineString=fileItemR.readline() for lineString in fileItemR: lineList = lineString.split(",") newList =
lineString=fileItemR.readline()
for lineString in fileItemR:
lineList = lineString.split(",")
newList = (lineList[1],lineList[0],lineList[2:99])
lineItem = str(newList)
formatString = lineItem.replace("('","").replace("', '",",").replace("', ",",").replace("['","").replace("\\n","\n").replace("'])","")
fileItemW.write(formatString)
你的问题是你读取了文件的第一行,却什么都不做
lineString=fileItemR.readline()
去掉这个,你就没事了
您还可以更简单地实现这一点:
for lineString in fileItemR:
lineList = lineString.split(",")
lineList[0], lineList[1] = lineList[1], lineList[0]
fileItemW.write(",".join(lineList[:99])) #Don't use [:99] if there's only 100 items in the line, and this could change in the future. If you're discarding items past the 100th then this is fine.
第一个
readline()
(在循环之前调用的那一个)占用了您的第一行。您的for循环没有这样的功能。for循环前面的一行显式读取第一行,然后您对其不做任何操作。由于stackoverflow不是您的调试工具,pdb.set_trace()是。您如何更新for循环中的lineString?谢谢!在我问过之后,我真的很想知道这一点(之前我花了很长时间想知道)。我猜readline读取第一行,然后For循环在未读行上按顺序进行。我将把第一行放在环路外。这基本上是一个我在一个程序中反复重复的操作,所以它解决了一个我不得不设计一个bodge来解决的问题。不过,“解决方案”在今天已经不适用了!;-)谢谢是的,那就对了。谢谢