Size: a a a

2021 November 25

IV

Iuliia Volkova in SPb Python
a shutil не решает проблему?
источник

IV

Iuliia Volkova in SPb Python
источник

nx

neumond x in SPb Python
Файловые системы вполне могут иметь запрещённые символы, например /
источник

SK

Sergio Keler in SPb Python
нууу...  зачем тогда питон?
источник

SK

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

IV

Iuliia Volkova in SPb Python
так это питоновая библиотека стандартная
источник

IV

Iuliia Volkova in SPb Python
выше же ссылка точно такой же стандартный модуль как os
источник

IV

Iuliia Volkova in SPb Python
специализированные операции для работы с файлами и директориями
источник

nx

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

nx

neumond x in SPb Python
Откуда взялась кои8 я ума не приложу. Обычно бывают кракозябры при распаковке зип архивов с винды.
источник

nx

neumond x in SPb Python
Потому что зип не декларирует кодировку в которой хранятся имена файлов.
источник

SK

Sergio Keler in SPb Python
ls -lh test/
total 0
-rw-r--r-- 1 root root 0 Nov 25 21:23 ???????-????
-rw-r--r-- 1 root root 0 Nov 25 18:27 Хороший-файл-мой
источник

SK

Sergio Keler in SPb Python
нет.
это наследие тяжёлое
источник

SK

Sergio Keler in SPb Python
просто вот есть куча папок и файлов с такими именами.
источник

SK

Sergio Keler in SPb Python
Болванка вот такая.
Что-то я заблудился в этих кодировках нафиг :(
источник

SK

Sergio Keler in SPb Python
Интересуют две функции магии и is_koi8
источник

SK

Sergio Keler in SPb Python
def is_koi8(s):
   try:
       s.encode('koi8-r')
       return False
   except TypeError:
       return True
   except UnicodeEncodeError:
       print("Не перекодировать.")
       return True

for root, dirs, files in os.walk('./test/',topdown=True):
   for file in files:
       if is_koi8(file):
           bad = some_magic(file)
           good = some_other_magic(file)
           print("mv {} {}".format(bad, bad))
           os.rename(bad, good)
источник

SK

Sergio Keler in SPb Python
# ls -lh test/ | iconv -f koi8-r -t utf-8
total 0
-rw-r--r-- 1 root root 0 Nov 25 21:23 Хороший-файл
-rw-r--r-- 1 root root 0 Nov 25 18:27 п╔п╬я─п╬я┬п╦п╧-я└п╟п╧п╩-п╪п╬п╧
@neumond8 обратите внимание, что "Хороший файл" -- это не кракозябры, а вполне себе байтики в кодировке древней.
источник

ЕД

Евгений Демидов... in SPb Python
у меня так работает
источник

ЕД

Евгений Демидов... in SPb Python
import os

# файл называется: я┘п╬я─п╬я┬п╦п╧_я└п╟п╧п╩ - кодировка koi8-r
count = 0
for root, dirs, files in os.walk('.'):
   print(files)
   for f in files:
       if f != 'test.py':
           print(type(f))
           name = f.encode('koi8-r').decode('utf-8')
           print(name) # ==> хороший_файл
           os.rename(f, str(count))
           count += 1
источник