2017-02-28 21 views
0

私は多数のサブディレクトリを持つディレクトリを持っています。Python:linecache.getlineが意図したとおりに動作しない

ディレクトリの最後には、2行目を抽出するために必要な.txtファイルがいくつかあります。

import os 
import os.path 
import linecache 

for dirpath, dirnames, filenames in os.walk("."): 
    for filename in [f for f in filenames if f.endswith(".txt")]: 
     #print os.path.join(dirpath, filename) 
     #print filename 
     print linecache.getline(filename, 2) 

すべてのディレクトリを正しく解析してすべてのテキストファイルを見つけることができました。しかし、linecache.getlineは単に改行(ファイルのその行からのデータがあるはずです)を返します。使用する

print linecache.getline(filename, 2).rstrip('\n') 

これも解決しません。

私は各ディレクトリのファイル名だけを正しく表示することができますが、これらをラインキャッシュに渡すことは潜在的に問題であるようです。現在のディレクトリの1 .txtファイルでスクリプトを実行するだけで、linecache.getline(file, lineno.)を正常に使用することができます。

答えて

1

linecache.getlineは現在の作業ディレクトリからfilenameを受け取ります。

ソリューションは、このようです:

import os 
import os.path 
import linecache 

for dirpath, dirnames, filenames in os.walk("."): 
    for filename in [f for f in filenames if f.endswith(".txt")]: 
     direc = os.path.join(dirpath, filename) 
     print linecache.getline(direc, 2) 
関連する問題