Я наткнулся на аналогичную проблему (в разделе «Контекст» )и получил следующее ftfy _строку _от _line.py решение:
#!/usr/bin/env python3
import ftfy, sys
with open(sys.argv[1], mode='rt', encoding='utf8', errors='replace') as f:
for line in f:
sys.stdout.buffer.write(ftfy.fix_text(line).encode('utf8', 'replace'))
#print(ftfy.fix_text(line).rstrip().decode(encoding="utf-8", errors="replace"))
Использование encode+replace + ftfy для автоматического -исправления Mojibake и других исправлений.
Я собрал >10GiB CSV базовых метаданных файловой системы, используя следующий скрипт gen _basic _files _metadata.csv.sh , работающий по существу:
find "${path}" -type f -exec stat --format="%i,%Y,%s,${hostname},%m,%n" "{}" \;
Проблема , с которой я столкнулся, заключалась в непоследовательном кодировании имен файлов в разных файловых системах, что приводило к UnicodeDecodeError
дальнейшей обработке с помощью приложений Python(csvsql для большей конкретики ).
Поэтому я применил описанный выше скрипт ftfy, и это заняло
Обратите внимание, что ftfy работает довольно медленно, обработка данных >10 ГБ заняла:
real 147m35.182s
user 146m14.329s
sys 2m8.713s
а sha256sum для сравнения:
real 6m28.897s
user 1m9.273s
sys 0m6.210s
на Intel (R )Core (TM )i7 -ЦП 3520M @ 2,90 ГГц + 16 ГБ ОЗУ (и данные на внешнем диске)
FWIW Я также могу воспроизвести это на 1.8.27, но это исправлено в 1.8.28
Если вы удалите запись listpw=never
, ваша строка ALL ALL=(ALL) NOPASSWD: /usr/bin/false
активирует правило принятия, а sudo -l
перестанет запрашивать пароль.