0

を使用する Python バージョン間に潜在的な違いはありますかopen? 私のスクリプトはファイルを受け入れ、いくつかの計算を実行し、これらの計算を出力します。

私のマシン (2.7.1 を実行) では、出力は正しいです。他のマシン (2.4.6 を実行) では、私の出力は all0.00です。一番近いのは、入力ファイルが開かれていないことです。open()これらのバージョン間に違いはありますか?

私の現在のオープンスキームは次のようになります。

infile = open(filename, 'r')

追加の質問: このnext(infile)メソッドは、私にとってもう最初の行をスキップしません2.6.4。で置き換えるnext(infile)lines = infile.readlines()[1:0]パフォーマンスに影響しますか?

編集:他のマシンのバージョンは2.4.6です。どうやってそれを台無しにしたのかわからない。元の投稿は私の失敗を反映しています。申し訳ありません。

Edit2: 以下は、ファイルから読み取るための私のコードです。

     for lines in infile:
          # do stuff with lines
     infile.close()

2.4.6 と 2.7.1 の間で異なる可能性がある何かがここにあると推測しています

最終編集:

私自身の問題を解決しました。next(infile) は、奇妙な理由で 2.4.6 と互換性がありません。私はそれを置き換えて、スクリプトを正しく実行しました。

ご協力いただきありがとうございます!

4

1 に答える 1

1

にそのような変更が加えられたとは思えませんopen

ご質問の後半部分について、

lines = infile.readlines()[1:0]は常にです。代わりに[]、おそらく必要なのは です 。lines = infile.readlines()[1:]

はい、 usingreadlinesはファイル全体 (正確にはそのすべての行) をメモリにロードします (使用しnextない場合は最初の行のみを読み取りますsome_thing = next(f))。

大きなファイルを読んでいる場合、これはパフォーマンスに影響を与える可能性があります。小さなファイルでは、それほど大きな違いはありません。

于 2012-12-02T21:30:36.313 に答える