создайте папку в каталоге и сохраните файлы в новой папке

#python #string

#python #строка

Вопрос:

Я хочу сделать следующее в своей программе:

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

Я создал папку в своем каталоге, но мне не удалось записать текст в файл и сохранить его в этой новой папке. Моя стратегия заключалась в том, чтобы открыть для записи, вставив полный путь к каталогу переменную, которая хранит имя папки, но это не сработало. Кто-нибудь может мне с этим помочь?

  final_text=' '.join(l)
    final_text=final_text.replace(' ,',',')
    #print('nn', final_text)

    def createFolder(directory):
        try:
            if not os.path.exists(directory):
                os.makedirs(directory)
        except OSError:
            print('Error: Creating directory. '  directory)

    user2=input('nWrite text to a file? Type "Y" for yes or "N" for no:')

    if user2 =='Y':
        text_name=input("name your folder. E.g. './texts/': ")
        createFolder(text_name)
        out_file=open('/Users/nataliaresende/Dropbox/PYTHON/' text_name,"w")
        out_file.write(final_text)
        out_file.close()
        print('nnText named',text_name, 'was written to a file. Check your directory')

    else:
        print('ok')
  

Комментарии:

1. Попробуйте добавить w к открывающей строке ( означает, что если файл не существует, создайте его) вот так: out_file=open('/Users/nataliaresende/Dropbox/PYTHON/' text_name, "w ") .

2. Это не сработало, бесполезно. Пожалуйста, скажите точно, что происходит, ошибка, файл в неправильном каталоге, файла вообще нет на диске и т.д. Но в любом случае, похоже, что путь к созданному файлу не использует вновь созданную папку, поэтому было бы удивительно, чтобы файл был создан там…

3. Вы пытаетесь записать содержимое в каталог, вам нужно указать ему имя файла. Итак '/Users/nataliaresende/Dropbox/PYTHON/' text_name a_file_name

Ответ №1:

Вы можете сначала создать папку, затем создать файл в этой папке:

 import os

user_input = input('nWrite text to a file? Type "Y" for yes or "N" for no:')
if user_input == 'Y':
    folder_name = input('name your folder. E.g. "texts": ')
    folder = os.path.join('/Users/nataliaresende/Dropbox/PYTHON/', folder_name)
    file_name = '{}.txt'.format(folder_name)
    file = os.path.join(folder, file_name)
    os.makedirs(folder)
    with open(file, 'w') as f:
        f.write('Some text')
    print('nnText named "{}" was written to a file. Check your directory: {}'.format(file_name, folder))
else:
    print('OK')
  

Ответ №2:

pathlib Библиотека Python (доступна с Python 3.4 ) превращает подобные вещи в настоящее удовольствие:

 import pathlib


new_dir_name = input('Directory name: ')
new_dir = pathlib.Path('/Users/nataliaresende/Dropbox/PYTHON/', new_dir_name)
new_dir.mkdir(parents=True, exist_ok=True)
# You have to make a file inside the new directory
new_file = new_dir / 'myfile.txt'
new_file.write_text('Hello file')
  

Комментарии:

1. Да, я забыл создать файл внутри каталога. Спасибо за это!