Maison  >  Article  >  développement back-end  >  Introduction détaillée aux classes de sous-processus et aux constantes en python

Introduction détaillée aux classes de sous-processus et aux constantes en python

不言
不言avant
2019-03-29 10:57:212494parcourir

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

Attributs

args : 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).

CompletedProcess

La valeur de retour de l'exécution de la fonction, indiquant que l'exécution du processus est terminée. run()

Attributs

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()

Method

check_returncode() : Si le code de retour est différent de zéro, lancez ExceptionCalledProcessError

Exception

subprocess.SubprocessError

Classe de base d'exception du module de sous-processus

subprocess.TimeoutExpired

Délai d'exécution du sous-processus.

Propriétés

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()

subprocess.CalledProcessError

ou check_call() lorsque la fonction renvoie un non-0 code d'état Lancer. check_output()

Attributs

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 PHP

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

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer