Maison >développement back-end >Tutoriel Python >Introduction détaillée aux classes de sous-processus et aux constantes en python
Cet article vous apporte une introduction détaillée à la classe de sous-processus et aux constantes en python. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Constant
subprocess.DEVNULL : une valeur spéciale qui peut être transmise aux paramètres stdin, stdout, stderr, ce qui signifie que l'entrée et la sortie seront redirigées à l'aide du fichier spécial os.devnull
subprocess .PIPE : Une valeur spéciale qui peut être transmise aux paramètres stdin, stdout, stderr, ce qui signifie rediriger les entrées et les sorties à l'aide de tubes
subprocess.STDOUT : Une valeur spéciale qui peut être passé au paramètre stderr, ce qui signifie que la redirection de l'erreur standard vers la sortie standard
Popen
exécute le sous-programme dans un nouveau processus.
Paramètres de construction
(args, bufsize=-1, executable=Aucun, stdin=Aucun, stdout=Aucun, stderr=Aucun, preexec_fn=Aucun, close_fds=True, shell =False, cwd=Aucun, env=Aucun, universal_newlines=Aucun, startupinfo=Aucun, creationflags=0, restaurer_signals=True, start_new_session=False, pass_fds=(), *, encoding=Aucun, erreurs=Aucun, text=Aucun)
args : Chaîne ou séquence. S'il s'agit d'une séquence, le premier élément de args est le programme à exécuter ; s'il s'agit d'une chaîne, l'interprétation dépend de la plate-forme. Dans les systèmes POSIX, args sera interprété comme le nom ou le chemin du programme à exécuter (. à condition qu'aucun paramètre ne soit transmis au programme).
shell : Spécifie s'il faut utiliser un shell comme programme à exécuter. S'il est défini sur True, il est plus recommandé d'utiliser des paramètres args de type chaîne.
Sur les systèmes POSIX, shell=True utilise /bin/sh
comme shell par défaut. Si args est une chaîne, la chaîne représente la commande à exécuter via le shell ; si args est une séquence, le premier élément spécifie le programme à exécuter et les autres éléments sont traités comme des paramètres.
Dans les systèmes Windows, shell=True utilise le shell spécifié par la variable d'environnement COMSPEC
par défaut, généralement C:WINDOWSsystem32cmd.exe
. Le seul scénario dans lequel vous devez spécifier shell=True est lorsque les instructions à exécuter sont des shells intégrés, tels que dir
, copy
.
bufsize : est passé à la fonction open()
en tant que paramètre correspondant lors de la création de l'objet fichier tube stdin/stdout/stderr.
0 : Ne pas utiliser la mise en mémoire tampon
1 : Utiliser la mise en mémoire tampon de ligne
Autres entiers positifs : taille du tampon
Entier négatif (par défaut) : utiliser la valeur par défaut du système
exécutable : Il existe très peu de scénarios dans lesquels shell=True est utilisé. Lorsque shell=True, sur les systèmes POSIX, ce paramètre indique la spécification d'un nouveau programme shell pour remplacer le shell par défaut /bin/sh
.
stdin/stdout/stderr : Spécifiez respectivement l'entrée standard, la sortie standard et l'erreur standard d'exécution du programme. Les valeurs facultatives incluent PIPE
, DEVNULL
, le descripteur de fichier existant (entier positif), l'objet fichier existant, Aucun. Les descripteurs de fichiers de processus enfants sont hérités du processus parent. De plus, stderr peut également être STDOUT
, indiquant que la sortie d'erreur standard est redirigée vers la sortie standard.
preexec_fn : Limité aux systèmes POSIX, définit un objet appelable à exécuter avant le programme dans le processus enfant.
close_fds : Si False, le descripteur de fichier suit l'inheritable
identité décrite dans Héritage des descripteurs de fichiers.
Si True, sous les systèmes POSIX, les descripteurs de fichiers autres que 0, 1 et 2 sont fermés avant l'exécution du processus enfant.
pass_fds : POSIX uniquement, séquence facultative de descripteurs de fichiers à garder ouverte entre les processus parent et enfant. Chaque fois que ce paramètre est fourni, close_fds est forcé à True.
cwd : Changez le répertoire de travail en cwd avant l'exécution du processus enfant, qui peut être une chaîne ou un objet semblable à un chemin.
restore_signals : Limité à POSIX, légèrement
start_new_session : Limité à POSIX, légèrement
env : Un objet dict qui définit les variables d'environnement pour le nouveau processus, remplaçant les variables héritées du processus parent. Sous Windows, la variable d'environnement side-by-side assembly
doit être disponible pour exécuter SystemRoot
. Si env est spécifié, toutes les variables d'environnement dont dépend l'exécution du programme doivent être fournies
encoding/errors/text/universal_newlines : stdin/stdout/stderr est par défaut mode binaire Ouvert. Mais si l'encodage/les erreurs sont spécifiés ou si le texte est True, stdin/stdout/stderr sera ouvert en mode texte en utilisant l'encodage et les erreurs spécifiés. Le paramètre universal_newlines est équivalent au texte et est utilisé pour la compatibilité ascendante.
infos de démarrage : Windows uniquement, légèrement
creationflags : Windows uniquement, légèrement
méthode
poll() : Vérifiez si le processus enfant est terminé. Renvoyez None pour indiquer qu'il n'est pas terminé, sinon définissez l'attribut returncode et retournez.
wait(timeout=None) : Si le processus enfant ne se termine pas après l'expiration du délai, lancez l'exception TimeoutExpired. Sinon, définissez l'attribut returncode et return.
communiquer(input=None, timeout=None) : Interaction de processus : envoyer des données à stdin, lire les données de stdout ou stderr jusqu'à ce que le caractère de fin soit lu. Renvoie un tuple sous la forme de (stdout_data, stderr_data). Le type de tuple est une chaîne ou un octet.
L'entrée est None ou les données à envoyer au processus enfant, qui peuvent être de type chaîne ou octet selon le mode d'ouverture du flux.
Si vous souhaitez interagir avec le stdin du processus, vous devez spécifier stdin=PIPE lors de la création de l'objet Popen. De même, si vous souhaitez que le tuple renvoyé ne soit pas None, vous devez définir stdout=PIPE et/ou stderr=PIPE.
Si le processus enfant ne se termine pas après l'expiration du délai, une exception TimeoutExpired est levée, mais le processus enfant n'est pas tué. Une bonne application devrait tuer le processus enfant et mettre fin à l'interaction :
proc = subprocess.Popen(...) try: outs, errs = proc.communicate(timeout=15) except TimeoutExpired: proc.kill() outs, errs = proc.communicate()
<.> send_signal(signal) : Envoie un signal au processus enfant
terminate() : Termine le processus enfant. Sur les systèmes POSIX, envoyez le signal SIGTERM au processus enfant. Sur les systèmes Windows, TerminateProcess() sera appelé pour terminer le processus
kill() : Terminer de force le processus enfant. Sur les systèmes POSIX, envoyez le signal SIGKILL au processus enfant. Kill() est un alias de terminate() sur les systèmes Windows
Attributsargs : Passez le premier paramètre du constructeur, liste ou type chaîne Popen
stdin : Si le paramètre stdin passé à Popen est PIPE, cet attribut représente un objet de flux inscriptible de type chaîne ou octet. Si le paramètre stdin transmis à Popen n'est pas PIPE, la valeur de cet attribut est None
stdout : est similaire à Popen.stdin, mais l'objet stream est lisible
stderr : Similaire à Popen.stdout
pid : ID du processus enfant. Si shell=True est défini, pid indique le numéro de processus du shell dérivé
returncode : code de retour du processus enfant, None indique que le processus n'est pas terminé. Un nombre négatif -N signifie que le processus s'est terminé par le signal N (POSIX uniquement).
CompletedProcessLa valeur de retour de l'exécution de la fonction, indiquant que l'exécution du processus est terminée. run()
args : Passez le premier paramètre de la fonction, liste ou type chaîne run()
code retour : Code de sortie du processus enfant. S'il s'agit d'un nombre négatif, cela signifie que le processus s'est terminé en raison d'un certain signal
stdout : La sortie standard du processus enfant capturé, la valeur par défaut est le type d'octet, en cas d'encodage ou les erreurs sont spécifiées lorsque la fonction est appelée, ou le type de chaîne si text=True est défini. Si la sortie standard n'est pas capturée, None est renvoyé.run()
stderr : L'erreur standard du processus enfant capturé, par défaut le type octet, si l'encodage ou des erreurs sont spécifiés lorsque le la fonction est appelée, ou set text=True est de type chaîne. Si l'erreur standard n'est pas détectée, renvoyez Nonerun()
check_returncode() : Si le code de retour est différent de zéro, lancez ExceptionCalledProcessError
cmd : Commande
timeout : Durée en secondes
sortie : ou run()
La sortie du processus enfant capturée par la fonction, sinon Aucuncheck_output()
stdout : alias de l'attribut de sortie
stderr : La sortie d'erreur du sous-processus capturé par la fonction, sinon Nonerun()
ou check_call()
lorsque la fonction renvoie un non-0 code d'état Lancer. check_output()
code retour : Code de sortie du processus enfant. S'il s'agit d'un nombre négatif, cela signifie que le processus s'est terminé en raison d'un signal
cmd : Identique à TimeoutExpired
sortie : Identique à TimeoutExpired
stdout : Identique à TimeoutExpired
stderr : Identique à TimeoutExpired
Cet article est terminé ici Pour plus d'excitant. contenu, vous pouvez suivre la colonne PHPtutoriel vidéo python du site Web chinois !
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!