Python rozpoznaje następującą instrukcję, która definiuje kodowanie pliku:
# -*- coding: utf-8 -*-
Zdecydowanie widziałem tego rodzaju instrukcje wcześniej ( -*- var: value -*-
). Skąd to pochodzi? Jaka jest pełna specyfikacja, np. Czy wartość może zawierać spacje, symbole specjalne, znaki nowej linii, a nawet -*-
samą siebie?
Mój program będzie zapisywał zwykłe pliki tekstowe i chciałbym dołączyć do nich metadane przy użyciu tego formatu.
# coding: utf-8
# coding: utf8
działa po wyjęciu z pudełka w Pythonie 2.7, nawet poza PyCharm. (Używam SublimeText).Odpowiedzi:
Ten sposób określania kodowania pliku w języku Python pochodzi z dokumentu PEP 0263 - Definiowanie kodowania kodu źródłowego w języku Python .
Jest również rozpoznawany przez GNU Emacs (patrz Python Language Reference, 2.1.4 Encoding Declarations ), chociaż nie wiem, czy był to pierwszy program, który używał tej składni.
źródło
# -*- coding: utf-8 -*-
jest rzeczą Pythona 2. W Pythonie 3+ domyślne kodowanie plików źródłowych to już UTF-8 i ta linia jest bezużyteczna.Zobacz: Czy powinienem używać deklaracji kodowania w Pythonie 3?
pyupgrade
to narzędzie, które możesz uruchomić w swoim kodzie, aby usunąć te komentarze i inne nieużyteczne pozostałości z Pythona 2, takie jak dziedziczenie wszystkich klasobject
.źródło
Są to tak zwane zmienne plikowe, które są rozumiane przez Emacsa i odpowiednio ustawiane. Zobacz odpowiednią sekcję w podręczniku do Emacsa - możesz je zdefiniować w nagłówku lub w stopce pliku
źródło
W PyCharm opuściłbym to. Wyłącza wskaźnik UTF-8 na dole z ostrzeżeniem, że kodowanie jest zakodowane na stałe. Nie myśl, że potrzebujesz wspomnianego powyżej komentarza PyCharm.
źródło
test1 = 'äöü'
to podpowie ci, aby dodać taki nagłówek do pliku. (pycharm 2019.1)