-2

每次我一次读取一行时,我的 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)
4

2 回答 2

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.
于 2012-12-12T13:02:34.920 回答
4

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

于 2012-12-12T13:03:05.793 回答