Как создать папку для хранения файлов, сгенерированных в цикле? - PullRequest
0 голосов
/ 29 марта 2019

Мне нужно сделать следующее в моей программе:

a) Попросить пользователя ввести имя папки, которая будет создана в моем каталоге b) создать папку c) сгенерировать файлы внутри папки

Сгенерированные файлы - это разные тексты, извлеченные из книги с помощью REGEX.Я хочу, чтобы программа зацикливалась на всех совпадениях REGEX и автоматически помещала каждое совпадение в файл (каждый текст совпадал с файлом).Эти текстовые файлы должны храниться в этой вновь созданной папке, названной пользователем.

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

Chapter1.txt Traceback (последний вызов был последним): файл "/Users/nataliaresende/Dropbox/PYTHON/word_concatenator_final.py", строка 375, в меню () Файл ")/Users/nataliaresende/Dropbox/PYTHON/word_concatenator_final.py ", строка 365, в файле отдельный_chapters () Файл" /Users/nataliaresende/Dropbox/PYTHON/word_concatenator_final.py ", строка 224, в папке отдельных_файлов os.makedirs ()"/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/os.py", строка 221, в makedirs mkdir (имя, режим) FileExistsError: [ошибка 17] Файл существует: '/ Users / nataliaresende/ Dropbox / PYTHON / folder '

Кто-нибудь имеет представление о том, что происходит?Может быть, обделение?

us=input('\n\nEnter the name of the book or file: ')

    pat = re.compile(r'(?<=\[@CHAPST@\]).+?(?=\[@CHAPFN@\])')
    my_chapters=[]


    with open(us, 'r', encoding="utf-8") as file:
        for i in pat.findall(file.read()):
            my_chapters.append(i)

    print('\n\nThis book contains',len(my_chapters), 'chapters')

    user2=input('\n\nWrite chapters to a file? | Y/N: ')


    if user2 =='Y':
    folder_name=input("Name your folder. E.g. 'Texts': ")
    folder=os.path.join('/Users/nataliaresende/Dropbox/PYTHON/', folder_name)
    os.makedirs(folder)

    for j in range(len(my_chapters)):
        chap='Chapter'+str(j+1) +'.txt'.format(folder_name)
        file = os.path.join(folder, chap)

        with open(file, "w") as f:
            for item in my_chapters[j]:
                f.write("%s" % str(item))
        print('\n\n', chap)

print('\n\nChapters 1 -',len(my_chapters), 'written to a file separately. Check your folder named "Chapters" in your directory')

1 Ответ

0 голосов
/ 29 марта 2019

Вам необходимо проверить, существует ли эта папка, и если она существует, пропустите ее создание:

if not os.path.exists(folder):
    os.makedirs(folder)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...