2010-12-14 94 views
0

J'ai un hexagone convertisseur binaire que j'utilise dans un script Python ...Exécution d'une commande avec os.system (A) produit différentes sorties puis de leur coquille

os.system("./HexToBinary " + str(sys.argv[1]) + "_hex " + str(sys.argv[1]) + "_binary") 

Si je lance mon script python sur le fichier A_hex, il produit le fichier A_binary. Mais si j'exécute cette commande directement dans la ligne de commande, le fichier AA_hex produit AA_binary. Mais A_binary et AA_binary diffèrent!

diff example_python example_shell 
Binary files example_python and example_shell differ 

La version produite par l'appel python os.system manque un bloc de données à la fin. Il semble que cela soit juste coupé.

Je suis un peu perplexe. Des pensées?

Répondre

1

Je ne sais pas si elle est nécessaire, mais essayez d'attendre, http://docs.python.org/library/os.html#os.wait

aussi, vérifiez la sortie du système, il peut aider à vous dire si quelque chose ne va pas

+0

imprime os.system sur 256. Comment J'utilise os.wait? Je mets un os.wait() juste après os.system (A), mais l'interpréteur crache OSError: [Errno 10] Aucun enfant ne traite – Mark

+0

@aaa ['os.system'] (http: //docs.python. org/library/os.html # os.system) attend que le sous-processus soit terminé. – khachik

+0

@mark 'os.system' renvoie ce code de sortie du processus fils (pas toujours vrai cependant). Vous ne pouvez pas l'utiliser pour 'os.wait'. – khachik