Creare e salvare file in una nuova directory in Python

Attività commerciale

Le sezioni seguenti spiegano come creare e salvare un nuovo file in Python usando una nuova directory (cartella) come destinazione.

  • Errore quando si specifica una directory inesistente con open()(FileNotFoundError)
  • os.makedirs()Creare una directory
  • Codice di esempio per creare un nuovo file con una destinazione

Quello che segue è un esempio di un file di testo.

Quando si memorizzano le immagini, dipende dalla libreria se si può specificare un percorso che include una directory inesistente (o se ne crea automaticamente una se non esiste).
FileNotFoundErrorSe si verifica questo errore, potete creare una nuova directory con os.madeirs() prima di eseguire la funzione di salvataggio, come nel seguente esempio.

Errore quando si specifica una directory inesistente con open()(FileNotFoundError)

Quando si crea un nuovo file con la funzione integrata open(), si verifica un errore se un percorso contenente una nuova directory (una directory che non esiste) viene specificato come primo argomento come destinazione.(FileNotFoundError)

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

Il primo argomento di open() può essere un percorso assoluto o un percorso relativo alla directory corrente.

Per l'uso di base di open(), come creare un nuovo file in una directory esistente, o sovrascrivere o aggiungere un file esistente, fate riferimento al seguente articolo.

Creare una directory(os.makedirs())

Quando si crea un nuovo file in una directory inesistente, è necessario creare la directory prima di open().

Se state usando Python 3.2 o successivo, è conveniente usare os.makedirs() con l'argomento exist_ok=True. Anche se la directory di destinazione esiste già, non si verificherà alcun errore e la directory può essere creata subito.

import os

os.makedirs(new_dir_path, exist_ok=True)

Se avete una vecchia versione di Python e non avete l'argomento exist_ok in os.makedirs(), otterrete un errore se specificate il percorso di una directory che esiste, quindi usate os.path.exists() per controllare prima l'esistenza della directory.

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

Vedi il seguente articolo per i dettagli.

Codice di esempio per creare un nuovo file con una destinazione

Quello che segue è un esempio di codice di una funzione che crea e salva un nuovo file specificando la directory di destinazione.

Il primo argomento dir_path è il percorso della directory di destinazione, il secondo argomento filename è il nome del nuovo file da creare, e il terzo argomento file_content è il contenuto da scrivere, ognuno specificato come una stringa.

Se la directory specificata non esiste, ne crea una nuova.

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)

Utilizzare come segue.

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

In questo caso, il file new_file.txt con il contenuto “nuovo testo” sarà creato in new_dir\sub_dir. In altre parole, il seguente file verrà creato ex novo.new_dir/sub_dir/new_file.txt

Concatenazione di nomi di directory e di file con os.path.join().

Inoltre, la modalità di open() è specificata come argomento. Per i file di testo, il valore predefinito 'w' va bene, ma se volete creare un file binario, impostate mode='wb'.