Запись unicode представляет в виде строки через sys.stdout в Python

Оба интерфейса являются частью стандарта POSIX, и в наше время оба интерфейса доступны в большинстве систем (я просто проверил Linux, FreeBSD, Mac OS X и Солярис). Поэтому выберите тот, который соответствует лучше Вашим требованиям, и используйте его.

Одно предостережение: это является неуказанным, что происходит, когда один процесс блокирует файл с помощью fcntl и другое использование lockf. В большинстве систем это эквивалентные операции (на самом деле в соответствии с Linux lockf, реализован сверху fcntl), но POSIX говорит, что их взаимодействие является неуказанным. Так, если Вы взаимодействуете с другим процессом, который использует один из двух интерфейсов, выберите того же.

Другие записали, что блокировки являются только консультацией: Вы ответственны за проверку, заблокирован ли регион. Кроме того, не используйте функции stdio, если Вы хотите использовать функциональность блокировки.

17
задан Reinstate Monica 3 August 2014 в 18:43
поделиться

2 ответа

Мне непонятно, почему вы не можете печатать; но если исходить из этого, да, этот подход мне кажется правильным.

3
ответ дан 30 November 2019 в 10:21
поделиться

Лучше всего проверить, подключены ли вы напрямую к терминалу. Если да, используйте кодировку терминала. В противном случае используйте кодировку, предпочитаемую системой.

if sys.stdout.isatty():
    default_encoding = sys.stdout.encoding
else:
    default_encoding = locale.getpreferredencoding()

Также очень важно всегда позволять пользователю указывать любую кодировку, которую он хочет. Обычно я использую параметр командной строки (например, -e ENCODING ) и анализирую его с помощью модуля optparse .

Еще одна хорошая вещь - , а не ] перезаписать sys.stdout с помощью автоматического кодировщика. Создайте кодировщик и используйте его, но оставьте только sys.stdout . Вы можете импортировать сторонние библиотеки, которые записывают закодированные строки байтов непосредственно в sys.stdout .

10
ответ дан 30 November 2019 в 10:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: