Cette fois, je vais expliquer comment exécuter des commandes système en Python, ce que tout le monde aime, et produire les résultats. Cela s'appelle une commande système, mais c'est un moyen d'exécuter toutes les commandes pouvant être utilisées sur Terminal en Python.
Comment obtenir uniquement le téléchargement et le téléchargement à partir de Speedtest json en utilisant jq https://qiita.com/Bob_Alice/items/83c0686f56012b300780
Tout d'abord, vous pouvez facilement exécuter des commandes système en utilisant la bibliothèque Python "sous-processus".
C'est super facile à utiliser, en Python
result = subprocess.run(['commander','そのcommanderの引数'], stdout=subprocess.PIPE)
Puis
result.returncode
Contient le code d'état (succès ou échec) de la commande
result.stdout
Le résultat de la sortie standard est affecté à.
Lorsqu'il y a plusieurs arguments, il semble y avoir différentes manières, mais il semble y avoir un problème de sécurité. Cette fois, la commande à utiliser et son argument ont été décidés pour mon utilisation, j'ai donc créé un script shell pour l'exécuter. Les scripts shell ne sont pas difficiles, enregistrez simplement un fichier avec les commandes et arguments que vous souhaitez utiliser avec l'extension .sh. Cette fois, le but était d'exécuter la commande suivante qui génère une valeur spécifique à l'aide de la commande jq du fichier json préparé.
cat result.json | jq ".download.bandwidth"
Par conséquent, j'ai écrit cette commande dans un fichier appelé "get_download_bandwidth_from_result.sh" et l'ai sauvegardée.
Ensuite, il est devenu le code Python suivant.
import subprocess
result = subprocess.run(['sh','get_download_bandwidth_from_result.sh'], stdout=subprocess.PIPE)
print(result.returncode)
print(result.stdout)
Résultat de sortie
b'33052461\n'
Cependant, lorsque la sortie standard est reçue par un sous-processus, ce sera un octet codé. Vous devez le décoder pour lui donner un aspect normal.
En savoir plus sur le sous-processus (série 3, version mise à jour) https://qiita.com/HidKamiya/items/e192a55371a2961ca8a4
Donc
result.stdout.decode().strip().split('\n')
Ce faisant, j'ai pu prendre des décisions.
Cependant, comme le résultat du choix est stocké sous forme de liste, il est nécessaire de spécifier qu'il s'agit de la première (0ème) variable de la liste afin de la traiter comme une variable unique.
output = result.stdout.decode().strip().split('\n')[0]
Ce faisant, le premier nombre après le choix est entré dans la sortie variable.
Le résultat final est le code Python suivant.
import subprocess
result = subprocess.run(['sh','get_download_bandwidth_from_result.sh'], stdout=subprocess.PIPE)
print(result.returncode)
print(result.stdout)
print(result.stdout.decode().strip().split('\n'))
C'est parfait. La fin.
Notez que subprocess.run () ne peut être utilisé qu'avec Python 3.5 ou version ultérieure https://ja.ojit.com/so/python/232121