Bestanden aanmaken en opslaan in een nieuwe map in Python

Bedrijf

In de volgende paragrafen wordt uitgelegd hoe een nieuw bestand in Python aangemaakt en opgeslagen kan worden met een nieuwe directory (map) als bestemming.

  • Fout bij het opgeven van een niet-bestaande map met open()(FileNotFoundError)
  • os.makedirs()Maak een map
  • Voorbeeldcode om een nieuw bestand te maken met een bestemming

Het volgende is een voorbeeld van een tekstbestand.

Bij het opslaan van afbeeldingen hangt het van de bibliotheek af of u een pad kunt opgeven dat een niet-bestaande map bevat (of dat er automatisch een wordt aangemaakt als die niet bestaat).
FileNotFoundErrorAls deze fout optreedt, kunt u een nieuwe map maken met os.madeirs() voordat u de functie om op te slaan uitvoert, zoals in het volgende voorbeeld.

Fout bij het opgeven van een niet-bestaande map met open()(FileNotFoundError)

Wanneer een nieuw bestand wordt aangemaakt met de ingebouwde functie open(), treedt er een fout op als een pad met een nieuwe directory (een directory die niet bestaat) als eerste argument wordt opgegeven als bestemming.(FileNotFoundError)

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

Het eerste argument van open() kan een absoluut pad zijn of een pad relatief ten opzichte van de huidige directory.

Voor het basisgebruik van open(), zoals het maken van een nieuw bestand in een bestaande directory, of het overschrijven van of toevoegen aan een bestaand bestand, raadpleeg het volgende artikel.

Maak een map(os.makedirs())

Wanneer een nieuw bestand wordt aangemaakt in een niet-bestaande directory, is het noodzakelijk om de directory aan te maken voordat open() wordt geopend.

Als u Python 3.2 of hoger gebruikt, is het handig om os.makedirs() te gebruiken met het argument exist_ok=True. Zelfs als de doelmap al bestaat, zal er geen fout optreden en kan de map in een keer worden aangemaakt.

import os

os.makedirs(new_dir_path, exist_ok=True)

Als je een oudere versie van Python hebt en het argument exist_ok in os.makedirs() niet hebt, krijg je een foutmelding als je het pad specificeert naar een directory die bestaat, dus gebruik os.path.exists() om eerst het bestaan van de directory te controleren.

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

Zie het volgende artikel voor details.

Voorbeeldcode om een nieuw bestand te maken met een bestemming

Het volgende is een codevoorbeeld van een functie die een nieuw bestand maakt en opslaat door de doelmap op te geven.

Het eerste argument dir_path is het pad van de bestemmingsdirectory, het tweede argument filename is de naam van het nieuwe bestand dat moet worden aangemaakt, en het derde argument file_content is de inhoud die moet worden geschreven, elk gespecificeerd als een string.

Als de opgegeven directory niet bestaat, maak dan een nieuwe aan.

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)

Gebruik als volgt.

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

In dit geval wordt het bestand new_file.txt met de inhoud “nieuwe tekst” aangemaakt in new_dir\sub_dir. Met andere woorden, het volgende bestand zal nieuw worden aangemaakt.new_dir/sub_dir/new_file.txt

Samenvoegen van map- en bestandsnamen met os.path.join().

Ook de modus van open() wordt als argument opgegeven. Voor tekstbestanden is de standaard 'w' prima, maar als je een binair bestand wilt maken, stel dan mode='wb' in.