Il existe plusieurs façons courantes d'exécuter des commandes système en Python
Remarque : L'exemple de code suivant s'exécute sous Python3.5.
os.system(cmd)
Exécutez la commande système dans le sous-terminal pour obtenir les informations de retour après l'exécution de la commande et l'état renvoyé par l'exécution
>>> import os >>> os.system('date') 2018年 4月 8日 星期日 19时29分13秒 CST 0 #运行状态号,0表示正确
Après l'exécution, deux lignes de résultats sont renvoyées. La première ligne est le résultat et la deuxième ligne est les informations sur l'état d'exécution
.os.popen(cmd)
Non seulement exécute la commande, mais renvoie également l'objet d'information après l'exécution (souvent utilisé pour obtenir les informations de retour après l'exécution de la commande. Le résultat est renvoyé via un fichier pipeline
).>>> import os >>> nowtime = os.popen('date') >>> print(nowtime.read()) 2018年 4月 8日 星期日 19时30分35秒 CST
Description de la méthode
getoutput Récupère les informations de retour après l'exécution de la commande
getstatus obtient la valeur d'état de la commande exécutée (si la commande est exécutée avec succès, elle renvoie une valeur de 0, sinon elle renvoie non-0)
getstatusoutput Obtient la valeur d'état et renvoie les informations de la commande exécutée
>>> import commonds >>> status, output = commands.getstatusoutput('date') >>> print(status) # 0 >>> print(output) # 2018年 4月 8日 星期日 19时31分45秒 CST
Remarque 1 : La valeur de retour (statut) renvoyée en utilisant cette méthode sous un système de type Unix n'est pas la même que la valeur de retour après l'exécution du script ou de la commande, car os.wait() est appelé le spécifique. la raison doit être discutée. En savoir plus sur la mise en œuvre du système wait(). Si vous avez besoin de la valeur de retour correcte (statut), il vous suffit de décaler la valeur de retour de 8 bits vers la droite.
Remarque 2 : Lorsque les paramètres ou les retours de la commande d'exécution contiennent des caractères chinois, il est recommandé d'utiliser un sous-processus.
Utilisez le contrôle et la surveillance des threads et affectez le résultat renvoyé à une variable pour faciliter le traitement du programme. Il existe de nombreux paramètres pouvant être configurés, de nombreuses options de personnalisation et une grande flexibilité. Lorsque j'utilisais os.system auparavant, j'ai rencontré le problème des descripteurs de fichiers hérités par les processus enfants. Je l'ai ensuite résolu en utilisant le paramètre close_fds = False. Document officiel : http://python.usyiyi.cn/python_278/library/subprocess.html
>>> import subprocess >>> nowtime = subprocess.Popen('date', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) >>> print(nowtime.stdout.read()) 2018年 4月 8日 星期日 19时32分41秒 CST
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!