Mencipta dan menyimpan fail dalam direktori baharu dalam Python

Perniagaan

Bahagian berikut menerangkan cara membuat dan menyimpan fail baharu dalam Python menggunakan direktori (folder) baharu sebagai destinasi.

  • Ralat semasa menentukan direktori yang tidak wujud dengan open()(FileNotFoundError)
  • os.makedirs()Buat direktori
  • Contoh kod untuk mencipta fail baharu dengan destinasi

Berikut ialah contoh fail teks.

Apabila menyimpan imej, ia bergantung pada pustaka sama ada anda boleh menentukan laluan yang termasuk direktori yang tidak wujud (atau sama ada ia akan menciptanya secara automatik jika ia tidak wujud).
FileNotFoundErrorJika ralat ini berlaku, anda boleh mencipta direktori baharu dengan os.madeirs() sebelum melaksanakan fungsi untuk menyimpan, seperti dalam contoh berikut.

Ralat semasa menentukan direktori yang tidak wujud dengan open()(FileNotFoundError)

Apabila mencipta fail baharu dengan fungsi terbina dalam open(), ralat berlaku jika laluan yang mengandungi direktori baharu (direktori yang tidak wujud) ditentukan sebagai hujah pertama sebagai destinasi.(FileNotFoundError)

open('not_exist_dir/new_file.txt', 'w')
# FileNotFoundError

Argumen pertama open() boleh menjadi laluan mutlak atau laluan relatif kepada direktori semasa.

Untuk penggunaan asas open(), seperti mencipta fail baharu dalam direktori sedia ada, atau menulis ganti atau menambah fail sedia ada, rujuk artikel berikut.

Buat direktori(os.makedirs())

Apabila mencipta fail baharu dalam direktori yang tidak wujud, adalah perlu untuk mencipta direktori sebelum open().

Jika anda menggunakan Python 3.2 atau lebih baru, adalah mudah untuk menggunakan os.makedirs() dengan argumen exist_ok=True. Walaupun direktori sasaran sudah wujud, tiada ralat akan berlaku dan direktori boleh dibuat sekaligus.

import os

os.makedirs(new_dir_path, exist_ok=True)

Jika anda mempunyai versi Python yang lebih lama dan tidak mempunyai argumen exist_ok dalam os.makedirs(), anda akan mendapat ralat jika anda menentukan laluan ke direktori yang wujud, jadi gunakan os.path.exists() untuk menyemak kewujudan direktori terlebih dahulu.

if not os.path.exists(new_dir_path):
    os.makedirs(new_dir_path)

Lihat artikel berikut untuk butirannya.

Contoh kod untuk mencipta fail baharu dengan destinasi

Berikut ialah contoh kod fungsi yang mencipta dan menyimpan fail baharu dengan menentukan direktori destinasi.

Argumen pertama dir_path ialah laluan direktori destinasi, nama fail argumen kedua ialah nama fail baharu yang akan dibuat, dan argumen fail_content ketiga ialah kandungan yang akan ditulis, setiap satu ditentukan sebagai rentetan.

Jika direktori yang ditentukan tidak wujud, buat yang baharu.

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)

Gunakan seperti berikut.

save_file_at_dir('new_dir/sub_dir', 'new_file.txt', 'new text')

Dalam kes ini, fail new_file.txt dengan kandungan “teks baharu” akan dibuat dalam new_dir\sub_dir. Dengan kata lain, fail berikut akan baru dibuat.new_dir/sub_dir/new_file.txt

Menggabungkan direktori dan nama fail dengan os.path.join().

Juga, mod open() dinyatakan sebagai hujah. Untuk fail teks, ‘w’ lalai adalah baik, tetapi jika anda ingin mencipta fail binari, tetapkan mod=’wb’.