Följande avsnitt förklarar hur du skapar och sparar en ny fil i Python med en ny katalog (mapp) som mål.
- Fel när en icke-existerande katalog anges med open()(
FileNotFoundError
) os.makedirs()
Skapa en katalog- Exempelkod för att skapa en ny fil med en destination
Följande är ett exempel på en textfil.
När du lagrar bilder beror det på biblioteket om du kan ange en sökväg som innehåller en obefintlig katalog (eller om det automatiskt skapar en sådan om den inte finns).FileNotFoundError
Om felet uppstår kan du skapa en ny katalog med os.madeirs() innan du kör funktionen för att spara, som i följande exempel.
Fel när en icke-existerande katalog anges med open()(FileNotFoundError)
När en ny fil skapas med den inbyggda funktionen open() uppstår ett fel om en sökväg som innehåller en ny katalog (en katalog som inte finns) anges som första argument som destination.(FileNotFoundError
)
open('not_exist_dir/new_file.txt', 'w')
# FileNotFoundError
Det första argumentet i open() kan vara en absolut sökväg eller en sökväg relativt den aktuella katalogen.
För grundläggande användning av open(), t.ex. för att skapa en ny fil i en befintlig katalog eller för att skriva över eller lägga till en befintlig fil, se följande artikel.
Skapa en katalog(os.makedirs())
När du skapar en ny fil i en obefintlig katalog är det nödvändigt att skapa katalogen före open().
Om du använder Python 3.2 eller senare är det lämpligt att använda os.makedirs() med argumentet exist_ok=True. Även om målkatalogen redan finns kommer inget fel att uppstå och katalogen kan skapas på en gång.
import os
os.makedirs(new_dir_path, exist_ok=True)
Om du har en äldre version av Python och inte har argumentet exist_ok i os.makedirs() kommer du att få ett fel om du anger sökvägen till en katalog som existerar, så använd os.path.exists() för att kontrollera att katalogen existerar först.
if not os.path.exists(new_dir_path):
os.makedirs(new_dir_path)
Se följande artikel för mer information.
- Relaterade artiklar:makedirs för att skapa djupa hierarkiska kataloger rekursivt i Python
Exempelkod för att skapa en ny fil med en destination
Följande är ett kodexempel på en funktion som skapar och sparar en ny fil genom att ange målkatalogen.
Det första argumentet dir_path är sökvägen till målkatalogen, det andra argumentet filename är namnet på den nya fil som ska skapas och det tredje argumentet file_content är det innehåll som ska skrivas, båda specificerade som en sträng.
Om den angivna katalogen inte finns, skapar du 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)
Använd på följande sätt.
save_file_at_dir('new_dir/sub_dir', 'new_file.txt', 'new text')
I det här fallet skapas filen new_file.txt med innehållet ”new text” i new_dir\sub_dir. Med andra ord kommer följande fil att skapas nyligen.new_dir/sub_dir/new_file.txt
Sammanfoga katalog- och filnamn med os.path.join().
Dessutom anges läget för open() som ett argument. För textfiler är standardvärdet ”w” bra, men om du vill skapa en binär fil, ange mode='wb'.