1
votes

Le sous-processus ouvre PowerShell, exécute des commandes, puis meurt

J'ai écrit du code qui utilise le module sous-processus Python pour ouvrir une fenêtre PowerShell, puis exécutez une commande dans cette même fenêtre. La fenêtre PS s'ouvre, puis se ferme presque immédiatement. Le code ci-dessous ouvrira une fenêtre PS et la laissera ouverte si j'ai supprimé le deuxième élément de cmd .

import subprocess
cmd = ['powershell', 'ls']
prompt = subprocess.Popen(cmd, stdin=subprocess.PIPE)


0 commentaires

3 Réponses :


0
votes

Toute raison de ne pas utiliser subprocess.call à la place ? Je pense que cela ferait exactement ce que vous voulez.


0 commentaires

0
votes

C'est parce que vous avez oublié de communiquer avec le processus Ajoutez simplement une ligne

output, error = prompt.communicate()  # this is to start the process
print(output) # add stdout=subprocess.PIPE
print(error)  # add stderr=subprocess.PIPE

PS: Je ne peux pas vous aider avec PowerShell car je ne connais pas PowerShell


0 commentaires

2
votes

Ajoutez l'argument -noexit comme suit ( -noprofile n'est pas obligatoire):

import subprocess
cmd = ['powershell', '-noprofile', '-noexit', '&', 'ls *.csv']
prompt = subprocess.call ( cmd )

Résultat :

 Powershell de python


1 commentaires

Merci! Cela l'a corrigé.