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

WBOY
Libérer: 2023-08-30 10:45:12
original
1459 Les gens l'ont consulté

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
Copier après la connexion

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')
Copier après la connexion

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
Copier après la connexion

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')
Copier après la connexion

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

Thu 24 Apr 2022 10:42:41 AM EAT
Copier après la connexion

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')
Copier après la connexion

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)
Copier après la connexion

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)
Copier après la connexion

Le résultat du script ci-dessus est :

Todays date is b'Thu 24 Apr 2022 10:48:19 AM EAT\n'
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!