|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Bonjour,
Sous Windows, j'ai écrit un script Python pour simplifier la conversion ..flv vers .mpg et .mp3 (avec ffmpeg). J'ai sauvé ce script sous l'extension .pyw (pour éviter la console) et j'ai associé l'extension ..flv à mon script. Quand je double-clic sur un fichier .flv, j'ai une erreur qui me dit que le programme "fichier.flv" n'est pas une application Win32 valide. Je suis d'accord mais Win32 était supposé lancer "script.pyw" et non son argument. J'ai vérifié, j'ai bien bien .py et .pyw dans la variable PATHEXT. J'ai aussi essayé avec py2exe, tout va bien pour l'exécution mais les arguments sont coupés en morceaux selon les espaces. Par exemple, sys.argv vaudra ["C:\Documents", "and", "Settings\Mon", "Utilisateur\Bureau\Mon", "Fichier.flv"] J'ai essayé avec py2cmd mais il ne transmet pas les arguments... Quelle est la bonne façon de m'y prendre ? Est-il possible que cette chose si simple sous Unix devienne si compliquée sous Windows ? Merci d'avance de votre aide, Franck |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Bonsoir !
Il faut simplement associer l'extension .pyw à un programme exécutable. Par exemple à C:\Python25\pythonw.exe script.pyw (au passage, l'utilisation de pythonw.exe dispense d'utiliser l'extension .pyw) Quelques autres possibilités : - définir un batch, et associer l'extension à ce batch - utiliser une ligne de commande basée sur cmd /c... - utiliser une ligne de commande basée sur start... (qui permet, entre autres, de lancer un fichier, par son appli associée) - utiliser le petit lanceur .exe de Effbot - utiliser l'utilitaire RunAs.exe (sur mon site) ; à ne pas confondre avec la commande RunAs de windows. Cet utilitaire permet, en plus, de lancer le script sous un autre compte (Admin, etc.) @-salutations Michel Claveau |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
> Il faut simplement associer l'extension .pyw à un programme
> exécutable. Par exemple à > C:\Python25\pythonw.exe script.pyw > (au passage, l'utilisation de pythonw.exe dispense d'utiliser > l'extension .pyw) C'est ce que j'imaginais et donc ce que j'ai fait : les fichiers .pyw sont ouverts par pythonw.exe et les .py par python.exe. Mais ça ne marche pas. > - définir un batch, et associer l'extension à ce batch J'y ai pensé mais je ne sais pas comment transmettre les paramètres du ..bat vers le .py. > - utiliser le petit lanceur .exe de Effbot > - utiliser l'utilitaire RunAs.exe (sur mon site) ; à ne pas confondre > avec la commande RunAs de windows. Cet utilitaire permet, en plus, de > lancer le script sous un autre compte (Admin, etc.) Après un rapide coup d'oeil, je vois mal comment m'en sortir avec ça. RunAd demande un paramètre et dans mon cas ce serait le fichier à traiter, quant à Effbot... pas assez de doc pour que je voies à quoi ça sert. Mais dans tous ces cas (.bat, lanceur, etc.) j'ai l'impression que je fais compliqué alors que ça devrait être simple ! Franck |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
Franck Pommereau a écrit :
>MVP a proposé l'idée suivante: >> - définir un batch, et associer l'extension à ce batch > > J'y ai pensé mais je ne sais pas comment transmettre les paramètres du > ..bat vers le .py. @echo off c:\python25\pythonw.exe c:\path\vers\mon\script\monscript.pyw %1 %2 %3 (etc... jusqu'à %9 si tu en as besoin) |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
Re !
> C'est ce que j'imaginais et donc ce que j'ai fait : les fichiers .pyw sont ouverts par pythonw.exe > et les .py par python.exe. Mais ça ne marche pas. Ce n'est pas ce que j'ai suggéré. En faisant ça, tu vas utiliser une association d'association. Ce qu'il faut faire, c'est associer pythonw.exe (avec le script en paramètre) à flv. Sinon, le batch de Laurent Pointal est une excellent manière de procéder. @+ MCI |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
Bonjour !
Je ne sais pas si tu l'as fait exprès, mais sais-tu que ton batch supportera le drag & drop et le copier/coller. Par exemple, il suffit de le mettre en icône sur le bureau. Ensuite, à partir de l'explorateur, clic-droit+copier un fichier, suivi de clic-droit+coller sur l'icone. Cela lancera Python et le script, avec le nom du/des fichiers en argument(s) (paramètre). @+ MCI |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
Méta-MCI (MVP) a écrit :
> Bonjour ! > > Je ne sais pas si tu l'as fait exprès, Non, je pensais juste à l'association extension -> exécutable de Windows. > mais sais-tu que ton batch > supportera le drag & drop et le copier/coller. > Par exemple, il suffit de le mettre en icône sur le bureau. Ensuite, à > partir de l'explorateur, clic-droit+copier un fichier, suivi de > clic-droit+coller sur l'icone. Cela lancera Python et le script, avec le > nom du/des fichiers en argument(s) (paramètre). Un candidat pour mettre ça dans le wiki ? > > @+ > > MCI > > |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
> @echo off
> c:\python25\pythonw.exe c:\path\vers\mon\script\monscript.pyw %1 %2 %3 > > (etc... jusqu'à %9 si tu en as besoin) Et il n'y aura pas de problème avec les espaces dans les noms de fichiers, ne dois-je pas mettre "%1", etc. ? En tout cas, j'ai réussi à trouver une solution directe. Dans le shell (enfin... cmd.exe) je tape : assoc .flv=Flv.Video ftype Flv.Video=C:\Chemin vers pythonw.exe "C:\Chemin vers script.pyw" "%1" %* (La deuxième commande sur une seule ligne.) Puis dans l'interface graphique, je change l'association de l'extension ..flv, là, il me propose "pythonw" et c'est ce que je choisis. Maintenant ça marche. (Mais je pense que le %* est douteux, et de toute façon ne servira jamais...) Vive la ligne de commande ! :-) En tout cas merci pour ces indications qui me seront sûrement utiles pour une autre fois. Franck |
|
![]() |
| Outils de la discussion | |
|
|