在For循环中丢失一行文本文件

时间:2012-12-12 13:00:34

标签: python

每次我一次读一行时,My For循环会跳过第一行。 当我只需要将整个文件读入内存时,问题不会发生,但大多数情况下我需要一次读取一行。

这是问题发生的一个例子。 此循环只是重新排序列表中的元素。 我省略了我打开和关闭的行和读取&写文件(我做的笨重的方式)。它的所有逗号分隔文本数据。

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)

2 个答案:

答案 0 :(得分:5)

您的问题是您从文件的第一行读取并且不对其执行任何操作

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.

答案 1 :(得分:4)

这是第一个readline()(你在循环之前调用的那个)吃掉你的第一行。