Форум сайта python.su
-2
Какая-то логика в этом есть, не все программы поддерживают юникод, + обратная совместимость с <2.3.
не все программы поддерживают юникодБлагодаря кривым рукам их авторов и авторов модулей?
+ обратная совместимость с <2.3.Костыли-костылики.
mbcs.Что это?
Вот здесь: os.listdirЯ os.walk() юзаю, а не os.listdir(). Почему я должен читать помощь к ней?
Офлайн
173
asilyatorНаверное для того и сделали 3-ю ветку, чтобы убрать проблемы пожертвовав обратной совместимостью.
+ обратная совместимость с <2.3.
Костыли-костылики.
asilyatorЗдесь можно согласиться. Но в защиту тех, кто писал документацию: os.listdir() описана раньше, в os.walk() есть упоминание об os.listdir() (хоть явно и не затрагивает тему кодировок).
Я os.walk() юзаю, а не os.listdir(). Почему я должен читать помощь к ней?
Офлайн
-2
В яве хоть тег @see есть, а в питоне нет даже общепринятого стандарта документации, сопоставимого с явовским.
Офлайн
173
asilyatorДумаю, уже можно считать таковым Sphinx, с помощью которого сделана документация стандартной библиотеки и большинства сторонних модулей. В нем как раз есть
В яве хоть тег @see есть, а в питоне нет даже общепринятого стандарта документации, сопоставимого с явовским.
.. seealso::
Офлайн
-2
Undecodable filenames will still be returned as string objects.Wut? ОС API разве не в юникоде возвращает?
Офлайн
14
Подстверждаю: в тройке все в Юникоде. Некоторые API принимают еще и bytes по историческим причинам.
Офлайн
-2
Питон или ОС API? Если ОС, то на НТ есть аски и юникодные версии почти всех функций. При этом аски вызывают внутри юникодные версии той же функции.
Офлайн
14
Я имел в виду Питон. Кстати, единственная известная мне ОС которая поддерживает юникод в своем API - Windows. Linux может работать с UTF-8 - что, согласитесь, строго говоря несколько иное
Офлайн
-2
Андрей СветловВ тройке тот же косяк: если передать os.walk() bytes, результат будет тоже bytes. По крайней мере, строковые литералы там по дефолту юникод. Вот нафига так делать?
Подстверждаю: в тройке все в Юникоде. Некоторые API принимают еще и bytes по историческим причинам.
Офлайн
14
Во первых, зачем передавать bytes, если есть str? Во вторых, не все OS поддерживают юникод. Иногда приходится передавать строку байт. Пример: имеем linux, ext2 с неверно указанными codepage и iochaset. В результате как-то работать с таким разделом можно будет только через bytes api.
Офлайн