11
votes

"Ouvrir avec ..." un fichier sous Windows, avec une application Python

J'essaie de déterminer comment créer un programme Python Ouvrir un fichier lorsqu'un utilisateur clique sur le fichier du fichier et sélectionne "Ouvrir avec". Par exemple, je souhaite qu'un utilisateur puisse cliquer avec droit sur un fichier texte et sélectionner mon programme afin que mon programme puisse traiter le fichier texte. Le nom du fichier texte est-il passé dans mon programme? Merci.


0 commentaires

3 Réponses :


3
votes

Le problème avec cette approche est que votre fichier .PY n'est pas un exécutable; Windows sera passer le fichier texte sous forme de paramètre sur le fichier .PY, mais le fichier .py lui-même ne fera rien, car ce n'est pas un fichier exécutable.

Ce que vous pouvez faire est de compiler votre script avec py2exe pour obtenir un exécutable réel que vous pouvez réellement spécifier dans L'écran "Ouvert avec ..." (vous pouvez même l'enregistrer comme valeur par défaut pour tout fichier * .foo). Le chemin du fichier .foo est passé devrait être sys.argv [1] dans votre script.


1 commentaires

Py2exe est une overcilleuse car elle constitue un programme à un EXE autonome qui ne nécessite pas de python du tout et il doit être recompanté à chaque fois que le programme est modifié (au cas où vous le développiez). Il existe des emballages exe dans% Python% \ scripts \ qui vient de lancer un script Python avec le même nom. Quelqu'un sait quelque chose à ce sujet?



1
votes

Tout d'abord, vous devrez enregistrer votre script pour fonctionner avec Python sous un PROGID dans le registre. Au minimum, vous aurez besoin du verbe ouvert défini: xxx

vous pouvez remplacer hkey_local_machine si vous installez à l'échelle de la machine. * Il existe également des conventions de versions que vous pouvez probablement ignorer. La section MSDN sur Types de fichiers a des informations plus détaillées.

La deuxième étape consiste à ajouter votre PROGID à la touche openwithprodids de l'extension que vous souhaitez apparaître dans la liste pour: xxx

La valeur de la clé n'a pas d'importance, tant que le nom correspond exactement à votre PROGID.


* Notez que HKEY_CLASSES_ROOT est en fait une fausse clé qui ' contient 'une union des deux hklm \ logiciel \ classes et hkcu \ logiciel \ classes ; Si vous écrivez au registre, vous devez choisir l'une des clés réelles. Vous n'avez pas besoin d'élever à l'installation dans HKEY_CURRENT_USER .


3 commentaires

Je vais déclarer que je n'ai pas essayé cela, car je ne veux pas particulièrement jouer avec mes paramètres sur cette machine. MSDN suggère que quelques autres valeurs doivent être définies mais un coup d'œil rapide à travers mon registre dit qu'ils ne sont pas nécessaires. Définitivement intéressé si cette solution minimale fonctionne; Allez-y et modifiez dans des bits supplémentaires que j'ai manqués.


Cela ne fonctionne tout simplement pas; Sélection du fichier .PY dans le menu «OUVERTURE AVEC» RAPPORT NE SUITE N'EST PAS une application Win32.


Je pense que cela pourrait fonctionner avec "envoyer à" mais pas avec "ouvert avec".



3
votes

Mon approche consiste à utiliser un fichier de redirection .bat contenant python quelqueprogram.py% 1 . Le % 1 transmet le chemin de fichier dans le script Python accessible avec
de SYS Import Argv argv [1]


0 commentaires