Follow

Hey, psst, j'aimerais trouver un moyen de parser le résultat de sensors -j avec du python.

C'est du json tout con mais j'y arrive pas.

Un idée d'un bout de code ?

· · Web · 5 · 1 · 0
@dada Ça ressemble à du json non ? Y'a pas une bibliothèque qui permet de jouer nativement avec dans python ?

@Chagratt

> json.loads(os.system('sensors -j'))

Je voudrais pour parser ce bordel mais ça marche pas.

Je tente de reprendre ce que j'avais fait ici : github.com/dadall/mastodon_exp

Mais c'est pas top. Ça me dit d'aller me faire voir.

@dada@diaspodon.fr Ah oui, ça c'est normal. os.system ne renvoie que l'exit code.

subprocess donne un wrapper plus simple à utiliser :

import json, subprocess result = json.loads(subprocess.check_output(['sensors', '-j']))

@Darks C'était que j'étais en train de me dire ! Merci <3

@Darks @dada ah ben j'aurais fait avec os.popen mais oué 🙂

@mmu_man@m.g3l.org @dada@diaspodon.fr L'avantage de check_output, c'est que t'as direct une string et pas un flux.

Notons que si t'attends une grosse sortie, popen est sûrement plus adapté.

@dada @Chagratt tout comme l'appel C system(), os.system() retourne le code d'erreur du processus, pas la sortie standard.
Tu veux plutôt un truc genre popen().
docs.python.org/3/library/os.h

@dada @Chagratt

with os.popen('sensors -j') as f:
print(json.load(f))

@dada
import json
obj = json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')

@dada@diaspodon.fr Fait à l'arrache, tu peux soit importer le json depuis un fichier avec open, soit le faire avec l'entrée standard (cf la doc, j'ai plus en tête la méthode)

import json raw = '{{"coretemp-isa-0000":{"Adapter":[…]}}' data = json.loads(raw) print(data['coretemp-isa-0000']['Adapter']) # > ISA adapter

@dada

sensors -j | python -c "import json; import sys; import pprint; pprint.pprint(json.loads(sys.stdin.read()))"

@dada regarde subprocess.run en capturant stdout :)

@dada sensors -j me passe un json que jq et python trouvent invalide \0/

Sign in to participate in the conversation
Diaspodon

Diaspodon.fr est une instance majoritairement francophone et généraliste. Aucun contenu du fédiverse n'est filtré par une décision d'administrateur ou de modérateur.