2013-01-05 3 views
3

Я перебрать кучу папок и файлов в папках, как это сделать:Получение имя папки

def get_files_in_directory(directory=rootDirectory): 
    for root, dirs, files in os.walk(directory, topdown='true'): 
     print("root %s dirs %s files %s" %(root, dirs, files)); 
     for file in files: 
      ext = os.path.splitext(file)[-1].lower(); 
      if (ext == '.mod'): 
       print(file); 

При печати файла, я хотел бы также напечатать относительное имя директории, содержащей его ,

Так что, если у меня есть

C:\\myfolderA\\myFolderB\\myFile.MOD 

Я просто

myFolderB 

Я не хочу

C:\\myFolderA\\myFolderB 

который, конечно, я могу получить от переменной дир

ответ

5

os.path.relpath() Использование:

print os.path.relpath(root, directory) 

где directory является имя переменной локального уже присутствует в вашей функции. os.path.relpath() делает root путь относительно directory. Так как вы начали свою прогулку от directory, что будет myFolderB для отправной точки directory = "C:\\myfolderA"

2
>>> os.path.relpath('/myFolderA/myFolderB/myFile.MOD', '/myFolderA') 
'myFolderB/myFile.MOD' 
0

Посмотрите на Дэвид Бизли говорить, «Генератор Уловки для системных программистов».

Слайды и исходный код от презентации можно найти here.

4

file_path - это полный путь к файлу.

folder_path = os.path.dirname(file_path) 

folder_path теперь полный путь к папке, содержащей файл.

path,folder_name = os.path.split(folder_path) 

имя_папки теперь только имя папки в конце folder_path.

print folder_name 
16

Используйте os.path.relpath(".",".."), и все готово.

Смежные вопросы