0

私はEclipse用のPyDevを使用してPython 3.3で作業しているので、これが私のコードです:

countdata = open(countfilename, 'r')
countlist = countdata.readlines()
print(len(countlist))
genecountline = wordlist(countlist[-1])
print(genecountline)

countfilename私の機械学習クラスで講師から与えられたスクリプトを使用してテキスト ファイルから生成された 7847 行のかなり長いテキスト ファイルを指します (2to3 を使用してスクリプトを Python 3 に変換する必要がありました)。

wordlistは、私が作成した単純な関数で、1 行のテキストを受け取り、その中の単語をリストとして返します。

ファイル全体を行のリストにまとめて、計算のために特定の行を自由に参照できるようにします。readlines を使用して一度にそれらをすべて読み取るか、ファイルを反復処理して、次のように行を 1 つずつリストに追加します。

countdata = open(countfilename, 'r')
countlist = []
for line in countdata:
    countlist.append(line)

関係ない。いずれにせよ、おおよそprint(len(countlist))を与えてくれます。によって返される特定の行は常に異なります (ファイルはジェネレーター オブジェクトを使用して構築されます。インストラクターがそのスクリプトを構築したと述べたように、それがどのように機能するかは完全にはわかりません)。763076287633countlist[-1]

genecountline = wordlist(countlist[-1])
print(genecountline)

Pythonがファイルの最後の行をどのように考えているかを確認するためだけに入力しました。そして、テキストパッドでファイルを開くと、返される行は、実際には によって返される行番号len(countlist)です。言い換えれば、最後の約を無視しているように見えます。私のファイルの210行。だから私の質問は、どうすればこれを修正でき、どうすればこれが再び行われないようにすることができますか?

4

1 に答える 1

1

静的テキスト ファイルからではなく、プログラムを実行するたびに生成されるファイルから読み取っている場合は、そのファイルを閉じていない可能性があります (その場合、すべてが書き込まれていない可能性があります)。閉じたくない場合は、フラッシュできます (.flush() メソッド)。

ファイルを生成するコードを投稿する必要があります。

于 2013-03-23T20:21:28.977 に答える