-2

My Forループは、一度に1行ずつ読み取るたびに、最初の行をスキップします。ファイル全体をメモリに読み込む必要がある場合は問題は発生しませんが、ほとんどの場合、一度に1行ずつ読み込む必要があります。

問題が発生する1つの例を次に示します。このループは、リスト内の要素を並べ替えるだけです。読み取りおよび書き込みファイルを開いたり閉じたりする行を省略しました(不格好な方法です)。そのすべてのコンマ区切りのテキストデータ。

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 に答える