J'ai un problème très étrange avec le sous-processus Python de Python. Je l'utilise pour appeler plusieurs fois un exe externe et garder la sortie dans une liste.Le sous-processus de Python.Popen renvoie la même sortie stdout même si elle ne devrait pas
Chaque fois que vous appelez cet exe externe, il renvoie une chaîne différente. Cependant, si je l'appelle plusieurs fois en utilisant Popen, il retournera toujours la même chaîne. =: - O
Il semble que Popen renvoie toujours la même valeur à partir de stdout, sans rappeler l'exe. Peut-être faire une sorte de mise en cache sans réellement rappeler l'exe.
Ceci est mon code:
def get_key():
from subprocess import Popen, PIPE
args = [C_KEY_MAKER, '/26', USER_NAME, ENCRYPTION_TEMPLATE, '0', ]
process = Popen(args, stdout=PIPE)
output = process.communicate()[0].strip()
return output
if __name__ == '__main__':
print get_key() # Returns a certain string
print get_key() # Should return another string, but returns the same!
Que diable suis-je tort ?!
Lorsque vous exécutez la commande C_KEY_MAKER deux fois - directement sur la ligne de commande - que produit-elle? –
Deux chaînes différentes, comme prévu. – cfischer
@Fernando: En fait pas prévu par moi. J'ai mes doutes que l'application de ligne de commande a des graines de nombres aléatoires appropriés. Il doit y avoir une différence de variable d'environnement entre le sous-processus et la version de ligne de commande. –