6 PEP 277: Obsługa nazw plików zapisanych jako Unicode w systemie Windows NT

W systemach Windows NT, 2000 oraz XP system operacyjny przechowuje nazwy plików jako napisy Unicode. Tradycyjnie w Pythonie nazwy plików reprezentowane były jako napisy bajtowe, co sprawiało, że pewne nazwy plików stawały się nieosiągalne.

Python pozwala obecnie na używanie dowolnych napisów Unicode (z uwzględnieniem ograniczeń nakładanych przez system operacyjny) w kontekście wszystkich funkcji, które oczekują nazw plików, w szczególności w roli parametru wbudowanej funkcji open(). Jeśli do funkcji os.listdir zostanie przekazany napis Unicode, zwracana lista również zawierać będzie napisy Unicode. Nowa funkcja, os.getcwdu(), zwraca nazwę bieżącego katalogu w postaci napisu Unicode.

Nadal można używać napisów bajtowych jako nazw plików - w systemie Windows Python automatycznie dokona konwersji do napisu Unicode przy użyciu kodowania mbcs.

W innych systemach operacyjnych również możliwe jest używanie napisów Unicode w roli nazw plików, jednak przed przekazaniem napisu do systemu wykonywana jest wówczas konwersja do napisu bajtowego, co może spowodować wystąpienie wyjątku UnicodeError. Aplikacja może sprawdzić, czy w bieżącej konfiguracji obsługiwane są nazwy plików będące dowolnymi napisami Unicode, poprzez odczytanie wartości logicznej os.path.supports_unicode_filenames.

W systemie MacOS funkcja os.listdir() może obecnie zwracać nazwy plików zapisane jako Unicode.

Zobacz też:

PEP 277, Obsługa nazw plików zapisanych jako Unicode w systemie Windows NT
Autor dokumentu: Neil Hodgson; autor implementacji: Neil Hodgson, Martin von Löwis oraz Mark Hammond.

Zajrzyj do Informacji na temat tej publikacji... aby pomóc w jej rozwoju.