#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. Да, я забыл создать файл внутри каталога. Спасибо за это!