Maison  >  Article  >  développement back-end  >  Façons d'exécuter des commandes Unix dans votre programme Python

Façons d'exécuter des commandes Unix dans votre programme Python

WBOY
WBOYoriginal
2023-08-30 10:45:121461parcourir

Façons dexécuter des commandes Unix dans votre programme Python

Unix est un système d'exploitation développé aux laboratoires AT&T Bell vers 1969 par Ken Thompson et Dennis Ritchie. Il existe de nombreuses commandes Unix intéressantes que nous pouvons utiliser pour effectuer différentes tâches. La question est : peut-on utiliser une telle commande directement dans un programme Python ? C'est ce que je vais vous montrer dans ce tutoriel.

La commande Unixls列出目录中的所有文件。如果您将 ls est placée telle quelle dans un script Python, et lorsque vous exécutez le programme, vous obtiendrez les résultats suivants :

Traceback (most recent call last):
  File "test.py", line 1, in <module>
    ls
NameError: name 'ls' is not defined

Cela indique que l'interpréteur Python traite ls comme une variable et nécessite qu'elle soit définie (c'est-à-dire initialisée), et ne la traite pas comme une commande Unix.

os.system()

Une solution à ce problème consiste à utiliser os.system() à partir du module Python os.

Comme mentionné dans la documentation, os.system() :

Exécuter la commande (chaîne) dans le sous-shell. Ceci est accompli en appelant la fonction C standard system() et présente les mêmes limitations.

Nous pouvons donc exécuter la commande ls en Python comme ceci :

import os
os.system('ls')

Cela renverra une liste de fichiers dans le répertoire actuel, où se trouve le programme .py. Mon répertoire actuel ressemble à ceci :

env  unixfile.py  workwithexcel

Donnons un autre exemple. Si vous souhaitez renvoyer la date et l'heure actuelles, vous pouvez utiliser la commande Unix date comme suit :

import os
os.system('date')

Dans mon cas, voici ce que j'ai obtenu avec le script ci-dessus :

Thu 24 Apr 2022 10:42:41 AM EAT

Appel()

Bien que os.system() 可以工作,但不推荐使用,因为它被认为有点旧且已弃用。更好的解决方案是 Python 子进程模块中的 call(args) fonctionne, il n'est pas recommandé car il est considéré comme un peu ancien et obsolète. Une meilleure solution est la fonction call(args) dans le module de sous-processus de Python. Comme mentionné dans la documentation sur cette fonctionnalité :

Exécutez la commande décrite par args. Attendez la fin de la commande, puis renvoyez l'attribut returncode.

Si nous voulons exécuter ls des commandes Unix en utilisant cette méthode, nous pouvons procéder comme suit :

from subprocess import call
call('ls')

Voyons comment renvoyer une date à l'aide du module subprocess, mais rendons l'exemple un peu plus intéressant.

import subprocess 
time = subprocess.Popen('date', stdout=subprocess.PIPE, stderr=subprocess.PIPE)
output, err = time.communicate()
print('Todays date is ', output)

L'exemple ci-dessus peut être exécuté plus simplement en utilisant check_output() comme indiqué ci-dessous :

import subprocess 
time = subprocess.check_output('date')
print('Todays date is', time)

Le résultat du script ci-dessus est :

Todays date is b'Thu 24 Apr 2022 10:48:19 AM EAT\n'

L'exemple ci-dessus montre la flexibilité d'utiliser différentes fonctions subprocess et comment nous pouvons transmettre les résultats aux variables pour des opérations ultérieures.

Conclusion

Comme nous l'avons vu dans ce tutoriel, les commandes Unix peuvent être appelées et exécutées à l'aide du module subprocess, qui offre une grande flexibilité dans l'utilisation des commandes Unix grâce à ses différentes fonctionnalités. Vous pouvez en savoir plus sur ce module et ses différentes fonctions dans la documentation Python.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn