Poniższe sekcje wyjaśniają, jak utworzyć i zapisać nowy plik w Pythonie, używając nowego katalogu (folderu) jako miejsca docelowego.
- Błąd podczas określania nieistniejącego katalogu za pomocą open()(
FileNotFoundError
) os.makedirs()
Utwórz katalog- Przykładowy kod do tworzenia nowego pliku z miejscem docelowym
Poniżej znajduje się przykład pliku tekstowego.
Podczas przechowywania obrazów zależy od biblioteki, czy można podać ścieżkę, która zawiera nieistniejący katalog (lub czy automatycznie go utworzy, jeśli nie istnieje).FileNotFoundError
Jeśli wystąpi ten błąd, możesz utworzyć nowy katalog za pomocą os.madeirs() przed wykonaniem funkcji do zapisu, jak w poniższym przykładzie.
Błąd podczas określania nieistniejącego katalogu za pomocą open()(FileNotFoundError)
Podczas tworzenia nowego pliku za pomocą wbudowanej funkcji open(), pojawia się błąd, jeśli ścieżka zawierająca nowy katalog (katalog, który nie istnieje) jest podana jako pierwszy argument jako miejsce docelowe.(FileNotFoundError
)
open('not_exist_dir/new_file.txt', 'w')
# FileNotFoundError
Pierwszym argumentem open() może być ścieżka bezwzględna lub ścieżka względna do bieżącego katalogu.
Dla podstawowych zastosowań funkcji open(), takich jak tworzenie nowego pliku w istniejącym katalogu, nadpisywanie lub dołączanie do istniejącego pliku, zapoznaj się z poniższym artykułem.
Utwórz katalog(os.makedirs())
Podczas tworzenia nowego pliku w nieistniejącym katalogu, konieczne jest utworzenie katalogu przed open().
Jeśli używasz Pythona 3.2 lub nowszego, wygodnie jest użyć os.makedirs() z argumentem exist_ok=True. Nawet jeśli katalog docelowy już istnieje, nie wystąpi żaden błąd i katalog może zostać utworzony od razu.
import os
os.makedirs(new_dir_path, exist_ok=True)
Jeśli masz starszą wersję Pythona i nie masz argumentu exist_ok w os.makedirs(), otrzymasz błąd, jeśli podasz ścieżkę do katalogu, który istnieje, więc użyj os.path.exists(), aby najpierw sprawdzić istnienie katalogu.
if not os.path.exists(new_dir_path):
os.makedirs(new_dir_path)
Zobacz poniższy artykuł, aby poznać szczegóły.
- Powiązane artykuły:makedirs do tworzenia głębokich katalogów hierarchicznych rekurencyjnie w Pythonie
Przykładowy kod do tworzenia nowego pliku z miejscem docelowym
Poniżej znajduje się przykład kodu funkcji, która tworzy i zapisuje nowy plik poprzez określenie katalogu docelowego.
Pierwszy argument dir_path jest ścieżką do katalogu docelowego, drugi argument filename jest nazwą nowego pliku, który ma zostać utworzony, a trzeci argument file_content jest zawartością, która ma zostać zapisana, każdy z nich podany jako łańcuch.
Jeśli podany katalog nie istnieje, utwórz nowy.
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)
Stosować w następujący sposób.
save_file_at_dir('new_dir/sub_dir', 'new_file.txt', 'new text')
W tym przypadku w katalogu new_dir zostanie utworzony plik new_file.txt o treści „nowy tekst”. Innymi słowy, zostanie utworzony następujący plik.new_dir/sub_dir/new_file.txt
Złączanie nazw katalogów i plików za pomocą os.path.join().
Jako argument podawany jest również tryb pracy funkcji open(). Dla plików tekstowych, domyślne 'w' jest w porządku, ale jeśli chcesz utworzyć plik binarny, ustaw mode='wb'.