Pyhton - итеративно назначать / создавать несколько каталогов с минимальным количеством строк - PullRequest
0 голосов
/ 11 июля 2019

У меня есть скрипт, который использует некоторые каталоги из своего домашнего каталога.Первым шагом является присвоение имен переменных этим каталогам с помощью os.path.join ().Однако, если каталог не существует, мне нужно его создать.Я не знаю заранее, какие каталоги существуют и не существуют.Я пришел к следующему решению:

homepath = os.path.abspath(os.path.dirname(sys.argv[0]))
def make_dir(var_name,dir_name):
    var_name = os.path.join(homepath,dir_name)
    if os.path.exists(var_name) == False:
        os.mkdir(var_name)
    return var_name

pathnames = ['bands','clipfiles','ndvi','ndmi','masked','clipped','upsampled','stats_csv']      

path_to_bands = make_dir(path_to_bands, pathnames[0])
path_to_clipfiles = make_dir(path_to_clipfiles, pathnames[1])
path_to_ndvi = make_dir(path_to_ndvi, pathnames[2])

path_to_bands, path_to_clipfiles и т. Д. - это папки, которые я буду использовать позже в сценарии.Однако теперь мне нужна строка кода для каждого каталога, который я назначаю переменной.Есть ли способ превратить path_to_bands, path_to_clipfiles и т. Д. В список и перебрать его в несколько строк?На самом деле у меня много каталогов, и я не хочу, чтобы они без необходимости заполняли мой скрипт.

Спасибо!

1 Ответ

1 голос
/ 11 июля 2019

os.makedirs() в значительной степени идеально подходит для вашего случая использования.Передав аргумент exist_ok=True, вам не нужно проверять, существуют ли каталоги ранее.Он также рекурсивно создает каталоги, поэтому вам нужно только указать каталоги нижнего уровня.

...