我正在嘗試創建一個通過目錄的walker。這是我部分工作的輸入和輸出。我正在使用一個測試目錄,但是我希望在導致某些問題的任何目錄上完成此操作。在python中分配os.walk中的實例
[IN]: print testdir #name of the directory
[OUT]: ['j','k','l'] #directories under testdir
[IN]: print testdir.j
[OUT]: ['m','n'] # Files under testdir.j
這是迄今爲止代碼:
class directory_lister:
"""Lists directories under root"""
def __init__(self,path):
self.path = path
self.ex = []
for item in os.listdir(path):
self.ex.append(item)
def __repr__(self):
return repr(self.ex)
這將返回目錄和文件,但我必須手動指定目錄的名稱。
testdir = directory_lister(path/to/testdir)
j = directory_lister(path/to/j)
etc
是否有辦法來自動實例這樣的:
for root,dirs,files in os.walk(/path/to/testdir/):
for x in dirs:
x = directory_lister(root) #I want j = directory_lister(path/to/j), k = directory_lister(path/to/k) and l = directory_lister(path/to/l) here.
纔會有:
class directory_lister:
def __init__(self,path):
self.path = path
self.j = directory_lister(path + os.sep + j) # how to automate this attribute of the class when assigned to an instance??
上面的代碼是錯誤的,因爲對象x只有成爲一個實例,但j,k,l必須手動定義。我是否需要使用其他課程或字典getattr但我總是遇到同樣的問題。如果需要任何額外的信息,請問,我希望我明確說明。
更新2
有沒有辦法通過下面阿努拉格添加其他複雜功能的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
只需要知道如何將它下面的類。謝謝。
到底是什麼`directory_lister`的期望的接口和功能? – 2011-12-13 17:49:13
`os.walk`已經列出了所有的目錄和文件,那麼`directory_lister`的含義是什麼? – ekhumoro 2011-12-13 18:04:02
@KarlKnechtel,功能是方便地列出根目錄下的目錄。所以你只需指定根目錄,其餘的就很容易查看。 – Neeran 2011-12-14 09:22:11