Bialka / cokolwiek

0 stars 0 forks source link

Ulepszenie obsługi plików tymczasowych #54

Closed Cosiek closed 3 years ago

Cosiek commented 3 years ago

Chcemy zmienić sposób w jaki tworzone są pliki tymczasowe w adjust_bitrates.

W tej chwili mamy coś takiego:

output_path = os.path.join(dir_path, "tym" + file_name)

Co jest całkiem fajne, z jednym małym ale - plik tymczasowy tworzy się w katalogu w którym trzymamy pliki. Dlatego może się zdarzyć, że ffmpeg utworzy plik tymczasowy, a potem nasz program się wywali (albo zabraknie prądu). Jest to o tyle specyficzna sytuacja, że trudno powiedzieć co się stanie przy następnym uruchomieniu programu - może potraktować plik tymczasowy jakby był jednym z normalnych utworów.

W każdym razie, możemy tego uniknąć tworząc nasze pliki tymczasowe w katalogu /tmp. Jest to specjalny katalog przeznaczony na pliki tymczasowe. Jego specyfika polega na tym, że jego zawartość jest usuwana przy restarcie systemu. Dlatego nie musimy się specjalnie martwić tym co się stanie z plikiem, jeśli coś pójdzie nie po naszej myśli. Nawet jeśli komputer padnie, to i tak po ponownym uruchomieniu nie będzie po nim śladu.

O ile możesz utworzyć wprost plik w katalogu /tmp, to jednak możesz mieć problemy w przypadku kolizji nazw plików (niektóre pliki z którymi mamy do czynienia potrafią mieć nazwy typu 01.mp3). Python ma dedykowany moduł do obsługi plików tymczasowych - tmpfile. Tu jest ładny przykład jak można to zrobić wykorzystując with tempfile.TemporaryDirectory().

Zwróć uwagę, że dzięki temu że korzystasz z with nie będziesz musiała usuwać pliku z dysku samodzielnie.

Bialka commented 3 years ago

Zamykam.