Création et sauvegarde de fichiers dans un nouveau répertoire en Python

Affaires

Les sections suivantes expliquent comment créer et enregistrer un nouveau fichier en Python en utilisant un nouveau répertoire (dossier) comme destination.

  • Erreur lors de la spécification d'un répertoire inexistant avec open()(FileNotFoundError)
  • os.makedirs()Créer un répertoire
  • Exemple de code pour créer un nouveau fichier avec une destination

Voici un exemple de fichier texte.

Lors du stockage des images, il dépend de la bibliothèque si vous pouvez spécifier un chemin qui inclut un répertoire inexistant (ou si elle en créera automatiquement un s'il n'existe pas).
FileNotFoundErrorSi cette erreur se produit, vous pouvez créer un nouveau répertoire avec os.madeirs() avant d'exécuter la fonction de sauvegarde, comme dans l'exemple suivant.

Erreur lors de la spécification d'un répertoire inexistant avec open()(FileNotFoundError)

Lors de la création d'un nouveau fichier avec la fonction intégrée open(), une erreur se produit si un chemin contenant un nouveau répertoire (un répertoire qui n'existe pas) est spécifié comme premier argument en tant que destination.(FileNotFoundError)

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

Le premier argument de open() peut être un chemin absolu ou un chemin relatif au répertoire courant.

Pour l'utilisation de base de open(), comme la création d'un nouveau fichier dans un répertoire existant, ou l'écrasement ou l'ajout à un fichier existant, consultez l'article suivant.

Créer un répertoire(os.makedirs())

Lors de la création d'un nouveau fichier dans un répertoire inexistant, il est nécessaire de créer le répertoire avant open().

Si vous utilisez Python 3.2 ou plus, il est pratique d'utiliser os.makedirs() avec l'argument exist_ok=True. Même si le répertoire cible existe déjà, aucune erreur ne se produira et le répertoire pourra être créé immédiatement.

import os

os.makedirs(new_dir_path, exist_ok=True)

Si vous avez une ancienne version de Python et que vous n'avez pas l'argument exist_ok dans os.makedirs(), vous obtiendrez une erreur si vous spécifiez le chemin d'accès à un répertoire qui existe, utilisez donc os.path.exists() pour vérifier d'abord l'existence du répertoire.

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

Voir l'article suivant pour plus de détails.

Exemple de code pour créer un nouveau fichier avec une destination

Voici un exemple de code d'une fonction qui crée et enregistre un nouveau fichier en spécifiant le répertoire de destination.

Le premier argument dir_path est le chemin du répertoire de destination, le deuxième argument filename est le nom du nouveau fichier à créer, et le troisième argument file_content est le contenu à écrire, chacun étant spécifié comme une chaîne.

Si le répertoire spécifié n'existe pas, créez-en un nouveau.

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)

Utilisez comme suit.

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

Dans ce cas, le fichier new_file.txt avec le contenu “new text” sera créé dans new_dir\sub_dir. En d'autres termes, le fichier suivant sera nouvellement créé.new_dir/sub_dir/new_file.txt

Concaténation des noms de répertoires et de fichiers avec os.path.join().

De plus, le mode de open() est spécifié en tant qu'argument. Pour les fichiers texte, le mode par défaut 'w' convient, mais si vous souhaitez créer un fichier binaire, définissez le mode='wb'.