2016-04-26 24 views
0

私はPythonでファイルの4つの特定の行を読む必要があります。私はすべてのファイルを読んでからそれから4つを得ることは望んでいない(menoryのために)。誰もそれを行う方法を知っていますか? ありがとう!Pythonでファイル全体を読み取らずに、ファイルの4つの特定の行を読み込むにはどうすればよいですか?

P.私は次のコードを使用しましたが、明らかにすべてのファイルを読み込んで4つを取り出します。

a=open("file", "r") 
b=a.readlines() [c:d] 
+0

ファイルのサイズはどれくらいですか? – TigerhawkT3

+2

[巨大なテキストファイルの特定の行にジャンプするにはどうすればいいですか?](http://stackoverflow.com/questions/620367/how-to-jump-to-a-particular-line-in-a- huge-text-file) – Bahrom

+1

彼らはその質問で['linecache'](https://docs.python.org/2/library/linecache.html)を使うことを提案しています。 – Bahrom

答えて

2

あなたは少なくとも、あなたがスライス

interesting_lines = list(itertools.islice(a,c,d)) 

をつかむためにisliceを使用することができますで...興味を持っているラインに読み取るために持っていますが、それはまだ、これらの行まで読み込み

0

ファイルは、少なくともMacやWindows、Linux、その他のUNIXシステムでは、バイトストリームに過ぎません。ファイル構造に "行"という概念はなく、改行文字を表すバイトだけです。ファイル内のN番目の行を見つける唯一の方法は、冒頭で始めて(N-1)個の改行が見つかるまで読むことです。 すべてのコンテンツをスキャンする必要はありませんが、読む必要があります。

次に、4つの改行が見つかるまでその点を読み込んで保存する必要があります。

これはPythonで行うことができますが、必要以上に読みやすい単純なアプローチを使用するのと比較して勝利だとはっきりしません。早すぎる最適化のような気がします。

+0

ファイル全体を読む必要はありません。あなたが行の長さを知っているなら、あなたは適切な場所に探して、ちょうど4行を読むことができます。 – BallpointBen

関連する問題