Python создание дополнительных папок - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь создать сценарий, который будет создавать одну папку при каждом запуске сценария. Я хочу, чтобы имя заканчивалось на число, которое увеличивается на 1. Итак, запустить, как только получит мне folder1, запустить снова получит мне folder2 и так далее. Мой текущий код запускается один раз и создает folder1 и folder2, после этого каждый запуск создает одну папку, как я хочу. Почему при первом запуске создаются 2 папки?

import os

counter = 1
mypath =.     ('C:/Users/jh/Desktop/request'+(str(counter)) +'/')
if not os.path.exists(mypath):
    os.makedirs(mypath)
    print ("Path is created")

while os.path.exists(mypath):   
    counter +=1
    mypath = ('C:/Users/jh/Desktop/request'+(str(counter)) +'/')
   print(mypath)

os.makedirs(mypath)

Ответы [ 3 ]

0 голосов
/ 27 января 2020

При первом запуске он проверяет, существует ли путь, но не создает его, поэтому создает каталог, как и ожидалось.

Затем программа продолжает выполнение и проверяет, существует ли он снова ( это так, потому что вы только что создали его) и создает # 2.

Возможно, вы захотите переключить это на if / else.

0 голосов
/ 27 января 2020

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

0 голосов
/ 27 января 2020

Это происходит потому, что ваш код на самом деле выглядит так с удаленными ненужными переменными:

import os

counter = 1
mypath = 'C:/Users/jh/Desktop/request1/'
if not os.path.exists(mypath):
    os.makedirs(mypath)
    print ("Path is created")

while os.path.exists(mypath):   
    counter += 1
    mypath = 'C:/Users/jh/Desktop/request'+(str(counter)) +'/'
    print(mypath)

os.makedirs(mypath)

Как вы видите, папка 'request1' создается при первом запуске программы, затем переходит к функции обычно. Это легко исправить, просто удалите первый оператор if:

import os

counter = 1
mypath = 'C:/Users/jh/Desktop/request1/'

while os.path.exists(mypath):   
    counter += 1
    mypath = 'C:/Users/jh/Desktop/request'+(str(counter)) +'/'
    print(mypath)

os.makedirs(mypath)

Я бы убрал лишние скобки, чтобы улучшить читаемость, и использовал бы f-строки, если вы можете, например, mypath = f'C:/Users/jh/Desktop/request{counter}/'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...