Size: a a a

2021 November 25

nx

neumond x in SPb Python
А причём тут питон?
источник

nx

neumond x in SPb Python
Не надо в имена файлов произвольные байты толкать и всё будет норм
источник

SK

Sergio Keler in SPb Python
Почему произвольные? Это кои8...
Ну, смотрите, вот принесли мне диск типа "добавь в файлопомойку", а там все имена файлов в кои8. Я должен сказать "идите нафиг, у вас произвольные байты в именах"? Нет.
В принципе нет никакого ограничения в ФС на байты в именах файлов. Ну, кроме /.
В принципе, можно случайными байтами закидывать любыми. Я не вижу в этом извращении чего-то плохого. ФС позволяет же.
источник

nx

neumond x in SPb Python
А что за ФС? Можно конкретнее?
источник

SK

Sergio Keler in SPb Python
Ну и, например, тяжёлое наследин -- самба. Там когда-то давно маньяк линуксоид сделал чарсет кои8 локальный. В итогу все работают в уникоде, а по самбе в кои8.
источник

nx

neumond x in SPb Python
Может там параметр монтирования есть какой-нибудь.
источник

SK

Sergio Keler in SPb Python
ext4
источник

SK

Sergio Keler in SPb Python
Я к тому, что держать имена в нескольких кодировках - фуфу, но это случается и вот я сегодня как раз избавлялся от такого наследия. Там ещё 1251 лежит и 866 даже. :D
Привёл всё в уникод.
источник

nx

neumond x in SPb Python
В одной ФС вот такая каша?
источник

SK

Sergio Keler in SPb Python
Удивительный секс с bytes([ord(c) - 0xdc00 if ord(c) > 256 else ord(c) for c in s]).decode('koi8-r') меня привёл в восторг!
Почему питон не может отдать кои8 нормально? Зачем такое извращение? Почему он сам это делает кривой уникод и потом сам его не понимает? Бггг
источник

SK

Sergio Keler in SPb Python
Ага. Кошмар.
:D Сам ржу.
Вот, вычистил и выдохнул.
источник

nx

neumond x in SPb Python
Потому что читает имя файла с диска в текущей кодировке, которая видимо utf-8. Хорошо хоть информацию не теряет. И я не уверен что это сам питон так делает. С большой вероятностью это libc/ядро.
источник

SK

Sergio Keler in SPb Python
Нет. Я накатал на цэ прогу, она читает как надо, ровно то, что лежит в папке.
Это извращение питона.
источник

nx

neumond x in SPb Python
источник

nx

neumond x in SPb Python
Ну как извращение. Это же приятно получить строку а не байты в именах файлов.
источник
2021 November 26

SK

Sergio Keler in SPb Python
Да я не против. Только эту строку надо потом утилизовать как-то, а не через вычитания и if-else
источник

SK

Sergio Keler in SPb Python
Завтра питон передумает и будет на DC00, а DE00 :D прога сломается
источник

nx

neumond x in SPb Python
> path may be a path-like object. If path is of type bytes (directly or indirectly through the PathLike interface), the filenames returned will also be of type bytes; in all other circumstances, they will be of type str.
источник

nx

neumond x in SPb Python
os.listdir(b'.') Надо аргумент байтами передать и ответ будет в байтах тоже.
источник

nx

neumond x in SPb Python
>>> os.listdir(b'.')[2].decode('koi8-r')
'Хороший-файл'
источник