Създаване и запазване на файлове в нова директория в Python

Бизнес

В следващите раздели е обяснено как да създадете и запишете нов файл в 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 text“ ще бъде създаден в new_dir\sub_dir. С други думи, следният файл ще бъде създаден наново.new_dir/sub_dir/new_file.txt

Свързване на имена на директории и файлове с os.path.join().

Освен това режимът на open() се задава като аргумент. За текстови файлове стандартният режим 'w' е подходящ, но ако искате да създадете двоичен файл, задайте mode='wb'.

Copied title and URL