J'ai une petite fonction qui est utilisée pour tester si un exécutable semble être en cours d'exécution. Il utilise la commande ps -A
et le module subprocess
et renvoie un booléen.Comment cette fonction de sous-processus qui vérifie si un exécutable spécifié est en cours d'exécution peut-elle être modifiée pour fonctionner avec Python 2 et 3?
def running(program):
results = subprocess.Popen(
["ps", "-A"],
stdout = subprocess.PIPE
).communicate()[0].split("\n")
matches = [
line for line in results if program in line and "defunct" not in line
]
if matches:
return True
else:
return False
Il fonctionne très bien en Python 2, mais lorsque je tente de l'utiliser en Python 3, je rencontre l'erreur suivante:
TypeError: a bytes-like object is required, not 'str'
Il est pas évident pour moi comment cette fonction pourrait être modifiée proprement pour travailler dans les deux Python 2 et 3. Je serais ravi d'être guidé.
Hey, merci pour votre Solution. Je n'avais pas entendu parler de cette option 'universal_newlines'. – BlandCorporation