У наступних розділах пояснюється, як створити та зберегти новий файл у Python, використовуючи новий каталог (папку) як місце призначення.
- Помилка під час визначення неіснуючого каталогу за допомогою open()(
FileNotFoundError
) os.makedirs()
Створіть каталог- Приклад коду для створення нового файлу з призначенням
Нижче наведено приклад текстового файлу.
Під час зберігання зображень від бібліотеки залежить, чи можна вказати шлях, який містить неіснуючий каталог (або вона автоматично створить його, якщо він не існує).FileNotFoundError
Якщо виникає ця помилка, ви можете створити новий каталог за допомогою os.madeirs() перед виконанням функції збереження, як у наведеному нижче прикладі.
Помилка під час визначення неіснуючого каталогу за допомогою open()(FileNotFoundError)
Під час створення нового файлу з вбудованою функцією open() виникає помилка, якщо в якості першого аргументу в якості місця призначення вказано шлях, що містить новий каталог (каталог, який не існує).(FileNotFoundError
)
open('not_exist_dir/new_file.txt', 'w')
# FileNotFoundError
Першим аргументом open() може бути абсолютний шлях або шлях відносно поточного каталогу.
Щоб дізнатися про основні способи використання open(), наприклад, створити новий файл у існуючому каталозі, перезаписати чи додати до існуючого файлу, зверніться до наступної статті.
Створіть каталог(os.makedirs())
При створенні нового файлу в неіснуючому каталозі необхідно створити каталог перед open().
Якщо ви використовуєте Python 3.2 або новішої версії, зручно використовувати os.makedirs() з аргументом exist_ok=True. Навіть якщо цільовий каталог уже існує, помилка не виникне, і каталог можна створити відразу.
import os
os.makedirs(new_dir_path, exist_ok=True)
Якщо у вас є старіша версія Python і немає аргументу exist_ok в os.makedirs(), ви отримаєте помилку, якщо вкажете шлях до існуючого каталогу, тому використовуйте os.path.exists(), щоб перевірити наявність спочатку існування каталогу.
if not os.path.exists(new_dir_path):
os.makedirs(new_dir_path)
Подробиці дивіться в наступній статті.
Приклад коду для створення нового файлу з призначенням
Нижче наведено приклад коду функції, яка створює та зберігає новий файл, вказуючи каталог призначення.
Перший аргумент dir_path – це шлях до цільового каталогу, другий аргумент filename – це ім’я нового файлу, який буде створено, а третій аргумент file_content – це вміст, який потрібно записати, кожен із яких зазначено у вигляді рядка.
Якщо вказаний каталог не існує, створіть новий.
import os
def save_file_at_dir(dir_path, filename, file_content, mode='w'):
os.makedirs(dir_path, exist_ok=True)
with open(os.path.join(dir_path, filename), mode) as f:
f.write(file_content)
Використовуйте наступним чином.
save_file_at_dir('new_dir/sub_dir', 'new_file.txt', 'new text')
У цьому випадку файл new_file.txt із вмістом «новий текст» буде створено в new_dir\sub_dir. Іншими словами, наступний файл буде створено заново.new_dir/sub_dir/new_file.txt
Конкатенація імен каталогів і файлів за допомогою os.path.join().
Крім того, як аргумент задається режим open(). Для текстових файлів ‘w’ за замовчуванням підходить, але якщо ви хочете створити двійковий файл, встановіть mode=’wb’.