Exécution de commandes externes en Python

@ Serveur partagé / Environnement sans pyenv ou ʻanaconda`

ʻGugu qu'est-ce que l'IPC :: Open3`. ↓

subprocess est recommandé.

Pourtant,,,

Dans la série «Python» 2, le standard n'est pas utilisé et il est clairement indiqué que «subprocess32» peut être utilisé.

Qu'est-ce que c'est? J'aimerais pouvoir le remplacer normalement.

Je n'ai pas de privilèges root, alors utilisez pip pour le saisir localement.

Installation du sous-processus32

Bien sûr, la version de Python devrait être 2 séries.

python


$ pip install --install-option="--prefix=$HOME/share" subprocess32
#$ export PYTHONPATH=$HOME/share/lib64/python2.6/site-packages:

Alors changez l'appel de la bibliothèque entre 2 et 3

python


import sys
import platform
py_version = platform.python_version_tuple()[0]

if  py_version == 2:
    sys.path.append('/home/bunzaemon/share/lib64/python2.6/site-packages')
    from subprocess32 import Popen, PIPE
else:
    from subprocess   import Popen, PIPE

Je pense que c'est plus comme Python d'utiliser try, mais ...

Popen

Popen

--Type de chaîne en 2 séries --Type d'octet en 3 séries

rends le. Il ne peut pas être géré correctement à moins qu'il ne soit changé en chaîne [^ 2].

[^ 2]: Le script ne passe pas à moins que decode (" utf-8 ") ne soit affiché même si ʻutf-8ne l'est pas @Python2.6.6`

python


cmd  = 'ls -al'
p = Popen(cmd.split(), stdout=PIPE, stderr=PIPE)
out = ( p.communicate()[0].split("\n")            if py_version == 2 else
        p.communicate()[0].decode("utf-8").split("\n") )

for line in out:
    print (line)

Erreur dans comunicate () [1].

Vous pouvez l'utiliser comme ʻIPC :: Open3normalement, mais pour le moment, habituons-nous aucomunicate` recommandé.

Toutes les sources

python


#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Importer des bibliothèques
import sys
import platform

py_version = platform.python_version_tuple()[0]
if  py_version == 2:
    sys.path.append('/home/bunzaemon/share/lib64/python2.6/site-packages')
    from subprocess32 import Popen, PIPE
else:
    from subprocess   import Popen, PIPE

cmd  = 'ls -al'
p = Popen(cmd.split(), stdout=PIPE, stderr=PIPE)
out = ( p.communicate()[0].split("\n")            if py_version == 2 else
        p.communicate()[0].decode("utf-8").split("\n") )

for line in out:
    print (line)

Recommended Posts

Exécution de commandes externes en Python
Exécuter des commandes externes avec python
Vérifiez l'existence de commandes externes en Python (comme `which`)
Rechercher des commandes externes avec python
Exécutez la commande shell / Python dans R
Mesurer le temps d'exécution de la fonction en Python
Dans la commande python, python pointe vers python3.8
Exécuter le module Python unittest dans vs2017
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
Méta-analyse en Python
Exécution de l'étape de débogage en Python (Bottle, Intellij)
Unittest en Python
[LLDB] Créez votre propre commande avec Python
Apprenez le modèle de conception "Commande" en Python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Plink en Python
Constante en Python
FizzBuzz en Python
Étape AIC en Python
Décomposer les arguments de commande en une seule ligne en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Exécution de tâches parallèles à l'aide de concurrent.futures en Python
Quad-tree en Python
Réflexion en Python
Chimie avec Python
Hashable en Python
DirectLiNGAM en Python
LiNGAM en Python
Aplatir en Python
Aplatir en python
Modèle pour créer des applications de ligne de commande en Python
Comment recevoir des arguments de ligne de commande en Python
Obtenir des frappes lors de l'exécution en arrière-plan en Python (Windows)
Charger et exécuter la commande depuis yml avec python
Exécution de la commande déclenchée par la mise à jour du fichier (édition python)
AtCoder # 36 quotidien avec Python
Texte de cluster en Python