Может ли путь к файлу быть недопустимым UTF -8?

Вы можете использовать psutil в python и создать свой собственный json.

psutil (python system and process utilities) is a cross-platform library for retrieving information on running processes and system utilization (CPU, memory, disks, network, sensors) in Python. It is useful mainly for system monitoring, profiling, limiting process resources and the management of running processes. It implements many functionalities offered by UNIX command line tools such as: ps, top, lsof, netstat, ifconfig, who, df, kill, free, nice, ionice, iostat, iotop, uptime, pidof, tty, taskset, pmap.

Пример:

import json
import psutil
def used_mem(json_key):
        mem_total = psutil.virtual_memory().total
        mem_percent = psutil.virtual_memory().percent
        mem_used = psutil.virtual_memory().used
        mem_free = psutil.virtual_memory().free
        swap_percent =  psutil.swap_memory().percent
        swap_total =  psutil.swap_memory().total
        swap_used =  psutil.swap_memory().used
        json_key['free_mem'] = mem_free
        json_key['total_mem'] = mem_total
        json_key['mem_used'] = mem_used
        json_key['percent_mem'] = mem_percent
        json_key['swap_percent'] =  swap_percent
        json_key['swap_total'] =  swap_total
        json_key['swap_used'] =  swap_used

json_key={}
used_mem(json_key)
print json.dumps(json_key)

выход:

{"swap_used": 14061568, "percent_mem": 48.3, "free_mem": 1792401408, "total_mem": 12447776768, "mem_used": 5128196096, "swap_total": 11999899648, "swap_percent": 0.1}

полезная ссылка :https://github.com/giampaolo/psutil

0
04.09.2021, 19:33
1 ответ

В дополнение к ответу Артема Сергеевича Ташкинова:

Распространенная причина наткнуться на недопустимую кодировку UTF. -8 последовательностей в именах файлов. :Они были созданы с использованием другой локали. И да, :нередко можно найти системы, все еще работающие с кодировкой набора символов ISO -8859. Не говоря уже о множестве различных наборов символов, используемых на ПК и MAC по всему миру...

В следующем примере показаны два файла с одинаковым именем Überraschung(немецкий для сюрприз)в одном каталоге. Один файл был создан с LANG=en_us.UTF-8,другой сLANG=en_US.ISO-8859-15:

при указании с использованием кодировки UTF -8:

    $ ls -lt
    total 0
    -rw-r--r-- 1 ktf ktf 0 Sep  6 12:01 ''$'\334''berraschung'
    -rw-r--r-- 1 ktf ktf 0 Sep  6 12:00  Überraschung

и при перечислении с использованием кодировки ISO -8859 -15:

    $ ls -lt
    total 0
    -rw-r--r-- 1 ktf ktf 0 Sep  6 12:01  Überraschung
    -rw-r--r-- 1 ktf ktf 0 Sep  6 12:00 'Ã'$'\234''berraschung'

Подсказка:Для правильного переключения между наборами символов необходимо изменить обе следующих настроек:

  1. Настройка переменной среды LANGв оболочке UNIX/Linux. Это определяет, как система UNIX -интерпретирует и обрабатывает символы.
  2. Кодировка символов вашей эмуляции терминала (, например. гном -терм или замазка). Это управляет тем, как символы отображаются на вашем экране.
3
06.09.2021, 10:45

Теги

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