2
以下のクラスは、Anuragによるディレクトリウォーカーを生成する動的属性です。ディレクトリListerクラスのReadline機能
import os
class DirLister(object):
def __init__(self, root):
self.root = root
self._list = None
def __getattr__(self, name):
try:
var = super(DirLister).__getattr__(self, name)
return var
except AttributeError:
return DirLister(os.path.join(self.root, name))
def __str__(self):
self._load()
return str(self._list)
def _load(self):
"""
load once when needed
"""
if self._list is not None:
return
self._list = os.listdir(self.root) # list root someway
root = DirLister("/")
print root.etc.apache
上記のAnuragによるDirListerに他の複雑な機能を追加する方法はありますか?したがって、ファイルtestdir/j/pに到達すると、ファイルpの最初の行が出力されます。
[IN] print testdir.j.p
[OUT] First Line of p
私は、ファイルの最初の行を印刷するためにクラスを作っています
class File:
def __init__(self, path):
"""Read the first line in desired path"""
self.path = path
f = open(path, 'r')
self.first_line = f.readline()
f.close()
def __repr__(self):
"""Display the first line"""
return self.first_line
ちょうど下のクラスでそれを組み込む方法を知る必要があります。ありがとうございました。
私は得る... TypeError:Unicodeに強制する:必要な文字列またはバッファ、NoneTypeが見つかりました。何かf = File(self.data)で間違っていますが、私はf = File(self._data)を試みましたが、運はありません。 – Neeran
また、返されたリストを反復処理できるように、このiterableを作成する方法もあります。ありがとうございました。 – Neeran