[Win] Associer un type de fichier à un script .pyw
10 réponses
Franck Pommereau
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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Méta-MCI \(MVP\)
Bonsoir !
Il faut simplement associer l'extension .pyw à un programme exécutable. Par exemple à C:Python25pythonw.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
Bonsoir !
Il faut simplement associer l'extension .pyw à un programme exécutable. Par exemple à
C:Python25pythonw.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.)
Il faut simplement associer l'extension .pyw à un programme exécutable. Par exemple à C:Python25pythonw.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
Franck Pommereau
Il faut simplement associer l'extension .pyw à un programme exécutable. Par exemple à C:Python25pythonw.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
Il faut simplement associer l'extension .pyw à un programme
exécutable. Par exemple à
C:Python25pythonw.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 !
Il faut simplement associer l'extension .pyw à un programme exécutable. Par exemple à C:Python25pythonw.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
Laurent Pointal
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:python25pythonw.exe c:pathversmonscriptmonscript.pyw %1 %2 %3
(etc... jusqu'à %9 si tu en as besoin)
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:python25pythonw.exe c:pathversmonscriptmonscript.pyw %1 %2 %3
- 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:python25pythonw.exe c:pathversmonscriptmonscript.pyw %1 %2 %3
(etc... jusqu'à %9 si tu en as besoin)
Méta-MCI \(MVP\)
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
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.
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
Méta-MCI \(MVP\)
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
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).
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
Laurent Pointal
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
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).
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
Franck Pommereau
@echo off c:python25pythonw.exe c:pathversmonscriptmonscript.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
@echo off
c:python25pythonw.exe c:pathversmonscriptmonscript.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.
@echo off c:python25pythonw.exe c:pathversmonscriptmonscript.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. ?
Ca serait mieux, en effet.
Méta-MCI \(MVP\)
Bonjour !
Et il n'y aura pas de problème avec les espaces dans les noms de fichiers, ne dois-je pas mettre "%1", etc. ?
Non ; car : - si on utilise du copier/coller, Windows aura déjà ajouté les guillemets (") dans %1 - si on travaille en invite de commande, soit l'utilisateur utilise les guillemets (ils seront dans %1), soit il les a oubliés, et alors, les différentes parties seront dispatchées dans %1 %2 %3 ... il faut alors utiliser "%*"
@-salutations
Michel Claveau
Bonjour !
Et il n'y aura pas de problème avec les espaces dans les noms de fichiers, ne dois-je pas mettre
"%1", etc. ?
Non ; car :
- si on utilise du copier/coller, Windows aura déjà ajouté les guillemets (") dans %1
- si on travaille en invite de commande, soit l'utilisateur utilise les guillemets (ils seront dans
%1), soit il les a oubliés, et alors, les différentes parties seront dispatchées dans %1 %2 %3 ...
il faut alors utiliser "%*"
Et il n'y aura pas de problème avec les espaces dans les noms de fichiers, ne dois-je pas mettre "%1", etc. ?
Non ; car : - si on utilise du copier/coller, Windows aura déjà ajouté les guillemets (") dans %1 - si on travaille en invite de commande, soit l'utilisateur utilise les guillemets (ils seront dans %1), soit il les a oubliés, et alors, les différentes parties seront dispatchées dans %1 %2 %3 ... il faut alors utiliser "%*"
@-salutations
Michel Claveau
Franck Pommereau
- si on utilise du copier/coller, Windows aura déjà ajouté les guillemets (") dans %1 - si on travaille en invite de commande, soit l'utilisateur utilise les guillemets (ils seront dans %1), soit il les a oubliés, et alors, les différentes parties seront dispatchées dans %1 %2 %3 ... il faut alors utiliser "%*"
Bref, c'est compliqué partout les noms de fichiers à espaces. :-)
Merci à vous deux pour ces éclaircissements, Franck
- si on utilise du copier/coller, Windows aura déjà ajouté les
guillemets (") dans %1
- si on travaille en invite de commande, soit l'utilisateur utilise les
guillemets (ils seront dans %1), soit il les a oubliés, et alors, les
différentes parties seront dispatchées dans %1 %2 %3 ... il faut alors
utiliser "%*"
Bref, c'est compliqué partout les noms de fichiers à espaces. :-)
Merci à vous deux pour ces éclaircissements,
Franck
- si on utilise du copier/coller, Windows aura déjà ajouté les guillemets (") dans %1 - si on travaille en invite de commande, soit l'utilisateur utilise les guillemets (ils seront dans %1), soit il les a oubliés, et alors, les différentes parties seront dispatchées dans %1 %2 %3 ... il faut alors utiliser "%*"
Bref, c'est compliqué partout les noms de fichiers à espaces. :-)
Merci à vous deux pour ces éclaircissements, Franck