Я новичок в Python, но у меня есть некоторый базовый опыт, и мне нужен кто-то, кто может помочь мне использовать модуль os для переименования подпапок на основе их родительской папки. Я искал ответы на прошлой неделе и не имел никакого успеха. Я предполагаю, что мне нужно использовать метод os.walk, чтобы сделать это.

Вот моя структура папок:

  • C : \ Data \ тест \
      < Li> C : \ Data \ тест \ map1 < UL> < Li> C : \ Data \ тест \ map1 \ 1617151
  • < Li> C : \ Data \ тест \ map2 < UL> < Li> C : \ Data \ тест \ map2 \ 181719
< Li> C : \ Data \ тест \ map3 < UL> < Li> C : \ Data \ тест \ map3 \ 182726 < Li> C : \ Data \ тест \ MAP4 < UL> < Li> C : \ Data \ тест \ MAP4 \ 894932

Мне нужны результаты, чтобы выглядеть так.

  • C : \ Data \ тест \
      < Li> C : \ Data \ тест \ map1 < UL> < Li> C : \ Data \ тест \ map1 \ map1
  • < Li> C : \ Data \ тест \ map2 < UL> < Li> C : \ Data \ тест \ map2 \ map2
< Li> C : \ Data \ тест \ map3 < UL> < Li> C : \ Data \ тест \ map3 \ map3 < Li> C : \ Data \ тест \ MAP4 < UL> < Li> C : \ Data \ тест \ MAP4 \ MAP4

Может кто-нибудь, пожалуйста, помогите?

0
smw 21 Мар 2017 в 18:22

2 ответа

Лучший ответ

Python 2.7:

import os

os.chdir("C:\data\test\") # go to dir
sub_dirs = os.walk('.').next()[1] # get list of subdirs
for sub_dir in sub_dirs:
    sub_sub_dir = os.walk('.').next[1] # get sub-subdir
    os.rmdir(sub_sub_dir) # remove sub-subdir
    os.makedirs(sub_dir + '\bla') # make new sub-subdir named subdir\bla

Питон 3+:

import os

os.chdir("C:\data\test\")
sub_dirs=next(os.walk('.'))[1] 
for sub_dir in sub_dirs:
    sub_sub_dir = next(os.walk('.'))[1]
    os.rmdir(sub_sub_dir)
    os.makedirs(sub_dir + '\bla')

Не проверено, но должно сделать это.

1
21 Мар 2017 в 16:38

Вы можете получить список всех файлов и соответствующих им папок, используя этот вкладыш:

here = '.' # Current location
files = [(root, files) for root, dirs, files in os.walk(here) if (not dirs and files)]

Для данной структуры папок он вернет:

[
  ('C:\data\test\map1', ['1617151']),
  ...
]

Теперь вы можете перебрать этот список и переименовать файлы (https: // docs.python.org/3/library/os.html#os.rename ) . Вы можете получить имя родительской папки, разделив корневую строку (root.split('\')[-1]).

0
squgeim 21 Мар 2017 в 15:35