2017-03-06 25 views
0

私はディレクトリにいくつかのテキストファイルを持っています。すべてのテキストファイルでは、彼らはこれらの行Python:テキストファイルから特定の範囲の行を出力する

を持って***************エラーの概要****************** ****

ライン1

ライン2

ラインn

======================== ============

すべてのテキストファイルには、同じ数の行(n)がありません。たとえば、file1には3行、file2には1行などがあります。私がしなければならないことは、1行目からn行目までのリストを印刷することです。すべてのファイルには独自のリストがあります。

これが私の最初のコード

target = "Error Summary" 

for file in files: 
    content = open(os.path.join(subdir, file),'r') 
    for line in content: 
    if target in line: 
     chunk = ''.join(islice(content,50)) 
     chunk = chunk.split("==", 1)[0] 
     chunk_list.append(chunk) 

である。しかし、ポインタが既にライン51に行くように、これらはだから私はこれは良さそうだ

for line in content: 
    if target in line: 
     for i in range(50): 
      chunk = content.next() 
      if chunk.startswith("=="): 
       break 
      chunck_list.append(chunk) 

新しいコードで出てくる私の次のコードを邪魔します。ただし、すべての行が1つのリストに印刷されます。誰でも助けることができますか?

--------------------------- EDIT ------------------ -----------

私はコードすでに

for line in content: 
    if target in line: 
     for line in content: 
     if line.startswith("=="): 
      break 
     chunk_list.append(line) 

を得たが、出力は1つのリストに圧縮されています。私が欲しいのは、list1のFile1の出力、list2のFile2の出力などです。誰でも助けてください..

答えて

1

私はlinecacheを使用することをお勧めします。 Hereはライブラリのドキュメントです。

>>> import linecache 
>>> linecache.getline(FILENAME, LINENUMBER) 

あなたが読んで百万のファイルを持っている場合には、メモリ内のファイルを持っていますが、覚えておくと便利だろう、これはスケールしません:あなたのような何かをします。

+0

これは、行数がわかっている場合に機能します。私の場合、テキストファイルには何百もの行があり、ターゲットはファイル1の上端、ファイル2の下端、ファイル3の中央にあります。 – Miyek

+0

ファイルの行数を取得するには、次のコマンドを使用します:http://stackoverflow.com/questions/845058/how-to-get-line-count-cheaply-in-python – PseudoAj

関連する問題