I de følgende afsnit forklares det, hvordan du opretter og gemmer en ny fil i Python ved at bruge en ny mappe som destination.
- Fejl ved angivelse af en ikke-eksisterende mappe med open()(
FileNotFoundError
) os.makedirs()
Opret en mappe- Eksempelkode til at oprette en ny fil med en destination
Følgende er et eksempel på en tekstfil.
Når du gemmer billeder, afhænger det af biblioteket, om du kan angive en sti, der omfatter en ikke-eksisterende mappe (eller om det automatisk opretter en mappe, hvis den ikke findes).FileNotFoundError
Hvis denne fejl opstår, kan du oprette en ny mappe med os.madeirs(), før du udfører funktionen til at gemme, som i følgende eksempel.
Fejl ved angivelse af en ikke-eksisterende mappe med open()(FileNotFoundError)
Når du opretter en ny fil med den indbyggede funktion open(), opstår der en fejl, hvis en sti, der indeholder en ny mappe (en mappe, der ikke findes), angives som det første argument som destination.(FileNotFoundError
)
open('not_exist_dir/new_file.txt', 'w')
# FileNotFoundError
Det første argument i open() kan være en absolut sti eller en relativ sti i forhold til den aktuelle mappe.
For grundlæggende brug af open(), f.eks. oprettelse af en ny fil i en eksisterende mappe eller overskrivning eller tilføjelse til en eksisterende fil, henvises til følgende artikel.
Opret en mappe(os.makedirs())
Når du opretter en ny fil i en ikke-eksisterende mappe, er det nødvendigt at oprette mappen før open().
Hvis du bruger Python 3.2 eller nyere, er det praktisk at bruge os.makedirs() med argumentet exist_ok=True. Selv hvis målmappen allerede eksisterer, opstår der ingen fejl, og mappen kan oprettes med det samme.
import os
os.makedirs(new_dir_path, exist_ok=True)
Hvis du har en ældre version af Python og ikke har argumentet exist_ok i os.makedirs(), vil du få en fejl, hvis du angiver stien til en mappe, der eksisterer, så brug os.path.exists() til at kontrollere, om mappen eksisterer først.
if not os.path.exists(new_dir_path):
os.makedirs(new_dir_path)
Se følgende artikel for yderligere oplysninger.
- Relaterede artikler:makedirs til at oprette dybe hierarkiske mapper rekursivt i Python
Eksempelkode til at oprette en ny fil med en destination
Følgende er et kodeeksempel på en funktion, der opretter og gemmer en ny fil ved at angive destinationsmappen.
Det første argument dir_path er stien til destinationsmappen, det andet argument filename er navnet på den nye fil, der skal oprettes, og det tredje argument file_content er det indhold, der skal skrives, og de er hver især angivet som en streng.
Hvis den angivne mappe ikke findes, oprettes der en ny.
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)
Anvendes som følger.
save_file_at_dir('new_dir/sub_dir', 'new_file.txt', 'new text')
I dette tilfælde oprettes filen new_file.txt med indholdet “ny tekst” i new_dir\sub_dir. Med andre ord vil følgende fil blive oprettet på ny.new_dir/sub_dir/new_file.txt
Sammenkædning af mappe- og filnavne med os.path.join().
Desuden angives tilstanden for open() som et argument. For tekstfiler er standardindstillingen 'w' fin nok, men hvis du vil oprette en binær fil, skal du angive mode='wb'.