2013-05-31 5 views
0

Я пытаюсь напечатать на имена каждого файла и подпапки в папке
Это код, который я до сих пор:Печать на имена папок и их подпапки рекурсивно

def traverse(path, d): 
    for item in os.listdir(path): 
     item = os.path.join(path, d) 
     try: 
      traverse(path,d) 
     except: 
      print(path) 
+0

Пожалуйста, не форматируйте свой код так, скопируйте и вставьте его здесь, выделите его, затем нажмите CTRL-K – jamylak

+0

@jamylak да простите, я wa я спешил, и это было мое первое сообщение. Благодаря! – Bob

+0

Что не так с этим кодом? –

ответ

1

Вы ищет os.walk.

Вы можете использовать это что-то вроде:

def traverse(path): 
    for root, dirs, files in os.walk(path): 
     print(root) 

     # if you want files too: 
     for f in files: 
      print(os.path.join(root, f)) 
+0

вот что мне нужно. Но в чем разница между использованием os.walk и os.listdr? Я новичок в python, и рекурсия дает мне трудное время. – Bob

+0

'os.walk' будет рекурсивно просматривать дерево каталогов. 'os.listdir' просто дает вам список файлов, не углубляясь в подпапки. – Seth

0

Я не знаю, какова цель этого заявления:

item = os.path.join(path, d) 

Я пишу код, как я понимание:

#!/usr/bin/env python 
# -*- coding: utf-8 -*- 

import os 

def traverse(path): 
    for item in os.listdir(path): 
     newpath = os.path.join(path, item) 
     if os.path.isdir(newpath): 
      traverse(newpath) 
     else: 
      print newpath 

if __name__ == '__main__': 
    traverse('.') 
Смежные вопросы