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.
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
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.
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!