2017-03-16 125 views
-1

我試着找到一個答案,但空來了。我嘗試在Python中使用os.walk(),但即使我在目錄中有文件,它也會返回空列表。文件夾結構爲:os.walk()不返回文件名

↳Photos 
    ↳fold1 
    ↳ file1.jpg 
    ↳ file1.nef 
    ↳fold2 
    ↳subfold1 
     ↳ file2.jpg 
    ↳ file2.jpg 
    ↳ file2.nef 

我的代碼是現在很簡單(不介意創建dirs_path現在,它按預期工作):

class PhotosCleanup(object): 
    def __init__(self): 
     super(PhotosCleanup, self).__init__() 

    def create_dirs_list(self): 
     for root, directories, filenames in os.walk(top='Photos'): 
      dirs_path = [os.path.join(root, dp) for dp in directories] 
      print dirs_path 
pc = PhotosCleanup() 
pc.create_dirs_list() 

但檔案名稱變量是空的。我究竟做錯了什麼?

編輯:更新的代碼片段。

EDIT2:好的,我忘了粘貼此腳本的acutal結果:

['Photos\\fold1', 'Photos\\fold2'] 
['Photos\\fold1\\Obrobione'] 
[] 
[] 
+0

您究竟如何運行代碼? –

+1

你的代碼並沒有試圖對'filenames'變量做任何事情。你究竟如何斷定它是空的? – tripleee

+0

我以前試過,但現在我使用調試器。 – CePeeN

回答

-1

你從來沒有給任何文件夾位置,你說的都是頂尖=文件夾,這是不夠的,os.walk執行其職責。

os.walk(top ='Photos'),在此添加一些地址,它可以工作。

+0

我不確定你的意思。它適用於文件夾和子文件夾,它不會用文件名填充文件名變量。我添加了有問題的實際輸出。 – CePeeN

0

確保您的腳本文件和文件夾Photos在同一目錄下,或者你可以使用:

print __file__ 

讓你的當前文件夾。

我想你正在使用錯誤的相對路徑。你也可以嘗試使用絕對路徑。實際上,代碼運行良好。

+0

他們在相同的文件夾,我的意思是,有FileUtils文件夾,其中照片和腳本位於。 – CePeeN

0

對不起,我不知道什麼是錯,但它實際上工作,對不起混亂。我的錯。不知道調試器顯示爲空的原因。再次抱歉。