Python: Создание папки с увеличивающимся номером в зависимости от существующих папок с тем же именем. - PullRequest
0 голосов
/ 05 августа 2020
• 1000 1001 *

Я пробовал создать программу

import os

path = 'C:\\Users\\Documents\\Python\\Projects'

for i in range (1,11):
    os.chdir(path)
    Newfolder= 'ID'+ str(i)
    os.makedirs(Newfolder)

Но это создает сразу 10 папок, но я хочу, чтобы при запуске сценария создавалась только одна папка.

Ответы [ 4 ]

1 голос
/ 05 августа 2020

При каждом запуске скрипта для создания каталога вам нужна переменная, которую необходимо сохранить. В вашем коде я думаю, что l oop бесполезен. Я решил таким образом каждый раз при запуске скрипта. Удалите сгенерированный файл .npy из вашего каталога, если вы хотите начать с 1

import os
import numpy as np
path = 'define your directory'
f='Flag_variable.npy'
try:
    Flag_variable = np.load('Flag_variable.npy')
    Flag_variable = int(Flag_variable)
    Flag_variable =Flag_variable+ 1
    np.save(f,Flag_variable)
except FileNotFoundError:
    
    np.save(f, 1)
    Flag_variable=1
    
 
os.chdir(path)
Newfolder= 'ID'+ str(Flag_variable)
os.makedirs(path+Newfolder)
print('Total Folder created', Flag_variable)


for i in range (1,11):
    pass
#     os.chdir(path)
#     Newfolder= 'ID'+ str(i)
#     os.makedirs(path+Newfolder)
1 голос
/ 05 августа 2020

Думаю, вам нужно понять, что делает 'for' l oop. Он в основном выполняет итерацию внутреннего кода столько раз, сколько вы хотите или установите значение.

В вашем коде for l oop повторяется 10 раз. По этой причине при однократном запуске сценария создается 10 папок.

В вашем случае вы хотите удалить для l oop и создать только одну папку. Но важно то, что вы хотите знать номер папки, которую вы создали ранее, чтобы номер в вашей следующей папке соответствовал имени предыдущей.

Для этого вы можете прочитать все папки в вашем каталоге, получите последнее имя и проанализируйте его, чтобы получить последний номер. Затем увеличьте число на единицу и создайте следующую папку.

1 голос
/ 05 августа 2020

Как насчет этого. Оператор if проверяет, существует ли уже кандидат на путь. если path_cand не существует, вы можете создать каталог и прервать его для l oop

import os

path = 'C:\\Users\\Documents\\Python\\Projects'

for i in range(1, 11):
    path_cand = path + f"\\ID{i}"
    if not os.path.exists(path_cand):
        os.mkdir(path_cand)
        break
1 голос
/ 05 августа 2020

Что вы можете сделать, так это использовать ОС для поиска папок в текущем каталоге, затем взять идентификатор с наибольшим номером и создать новую папку с этим идентификатором + 1.

import os

all_folders = os.listdir(path)
all_folders.sort()
latest = all_folders[-1].replace('ID', '')
new = int(latests) + 1
os.makedirs('ID'+str(latest))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...