Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在For循环中丢失一行文本文件_Python - Fatal编程技术网

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

Python 在For循环中丢失一行文本文件,python,Python,每次我读一行时,For循环都会跳过第一行。 当我只需要将整个文件读入内存时,问题不会出现,但大多数情况下,我需要一次读入一行 下面是出现问题的一个示例。 这个循环只是对列表中的元素重新排序。 我省略了打开和关闭读写文件的行(我这样做很笨拙)。它的所有文本数据都是逗号分隔的 lineString=fileItemR.readline() for lineString in fileItemR: lineList = lineString.split(",") newList =

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

你的问题是你读取了文件的第一行,却什么都不做

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来解决的问题。不过,“解决方案”在今天已经不适用了!;-)谢谢是的,那就对了。谢谢