2010-10-18 2 views
0

Je suis en train de développer une interface graphique en python avec wxPython pour lancer plusieurs programmes de sous-processus. Maintenant, je pourrais le faire pour les fichiers locaux, par exemple. si nous avons un compilé fichier .out sous le chemin « /AAA/BBB/xxx.out », je pouvais faire avec la commande comme ceci:Appel de programmes distants par URL avec python

subprocess.Popen("/AAA/BBB/xxx.out", stdout=subprocess.PIPE) 

Maintenant, je pense à développer les deux associés-URL suivante fonctions à distance, les appelant encore en tant que sous-processus (parce que le processus principal est l'interface graphique), mais je ne sais pas comment le faire en python.

1) Comment lancer le logiciel, compte tenu de l'url du fichier .out? par exemple. étant donné http://www.ABC.com/xxx.out

2) comment lancer le programme, étant donné l'url du code source de ce fichier .out (par exemple http://www.ABC.com/xxx/src/ contient le code source C++ et le makefile du programme)

quel type de module python pourrait être utilisé et quels problèmes potentiels pourraient être associés? Habituellement, quelle est la bonne façon de mettre en œuvre ces deux fonctionnalités?

Merci beaucoup pour toutes suggestions ou exemples de code (ce sera très utile) !!

+0

Si vous téléchargez du code à partir d'un serveur sur une machine locale, utilisez 'urlopen' de' urllib' dans la bibliothèque standard. Si vous voulez exécuter un script sur une machine externe, vous devrez écrire une sorte de serveur, peut-être avec 'asyncore' ou' SocketServer', tous deux dans la bibliothèque standard. –

+0

HI, 33tnerd, merci pour votre réponse. Puis-je demander si la fonction urlopen peut également être utilisée pour télécharger un dossier ou un répertoire de fichiers? parce que pour le 2ème scénario, j'ai besoin de télécharger le dossier entier. – pepero

Répondre

0

Pour charger ce fichier en ligne en tant que sous-processus à partir de votre programme, vous devrez le télécharger pour un emplacement temporaire. Utilisez simplement le module urllib2 pour télécharger le fichier avec http://docs.python.org/library/tempfile.html pour créer un espace réservé temporaire. Ils vous pouvez l'exécuter.

+0

Salut, relima, merci beaucoup pour votre réponse. Si j'utilise urllib2.urlopen ("http://www.ABC.com/xxx.out") et tmpfile = NamedTemporaryFile (mode = 'w + b', suffixe = '. Out', préfixe = 'xxx', dir), mais comment combiner les deux? pour atteindre l'objectif "ouvrir l'URL, et télécharger le fichier dans le namedtempfile"? – pepero

0

Il y a deux parties très distinctes à votre question: comment obtenir un fichier à partir d'une URL distante et comment l'exécuter.

Vous semblez avoir la première partie couverte, alors il suffit de google comment télécharger des fichiers avec Python. Vous pouvez également utiliser un téléchargeur de fichier déjà existant pour la tâche (vous avez déjà fait la partie des sous-processus en cours d'exécution), ou mieux, un module Python existant.

Maintenant, étant donné l'URL d'un code source, ... code source de quoi? Je veux dire, si c'est python, vous pouvez l'exécuter dans un interpréteur, mais vous devrez peut-être compiler le code source dans d'autres langues, et cela peut avoir des dépendances, et d'autres complications.

+0

HI, Santiago, pour le 2ème scénario, c'est le code source C++ et le makefile du programme – pepero

+0

Eh bien, vous pouvez toujours créer et exécuter le programme, mais différents problèmes peuvent survenir ... pourquoi voulez-vous cette fonctionnalité? – slezica