60 votes

Glisser-déposer un script Python dans l'explorateur Windows

Je voudrais glisser et déposer mon fichier de données sur un script Python et faire en sorte qu'il traite le fichier et génère une sortie. Le script Python accepte le nom du fichier de données comme paramètre de ligne de commande, mais l'Explorateur Windows ne permet pas au script d'être une cible de dépôt.

Y a-t-il une sorte de configuration à faire quelque part pour que cela fonctionne ?

0 votes

Je pense que cela fonctionne uniquement si vous avez installé python à partir du programme d'installation de Windows (en gros, si vous pouvez double-cliquer pour exécuter un script python).

0 votes

Sous Windows 10, j'ai dû double-cliquer sur le fichier PY et l'ouvrir avec Python une fois pour que le gestionnaire de dépôt soit reconnu.

61voto

Blair Conrad Points 56195

Bien sûr. D'un article technologique sans intérêt intitulé "Make Python Scripts Droppable in Windows" (en anglais) vous pouvez ajouter un gestionnaire de dépôt en ajoutant une clé de registre :

Voici un fichier d'importation de registre que vous pouvez utiliser pour ce faire. Copiez les éléments suivante dans un fichier .reg et exécutez-la (Assurez-vous que vos extensions .py sont mappées à Python.File).

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Python.File\shellex\DropHandler]
@="{60254CA5-953B-11CF-8C96-00AA00B8708C}"

Cela permet aux scripts Python d'utiliser le gestionnaire de dépôt WSH, qui est compatible avec les noms de fichiers longs. Pour utiliser le gestionnaire de noms de fichiers courts, remplacez le GUID par 86C86720-42A0-1069-A2E8-08002B30309D .

Un commentaire dans ce post indique que l'on peut activer le dépôt sur les fichiers Python "sans console" ( .pyw )" ou "fichiers Python compilés ( .pyc )" en utilisant le bouton Python.NoConFile et Python.CompiledFile classes.

0 votes

Où déposez-vous le fichier ? Dans la fenêtre de la console ? Ou sur l'icône du fichier script ? Je ne comprends pas.

0 votes

Merci @Blair pour votre solution. Je suis un débutant et j'obtiens l'erreur suivante Aucun fichier ou répertoire de ce type après avoir laissé tomber. Vous pouvez corriger cela en ajoutant ce qui suit au début du script : exepath = sys.argv[0] if '\\' in exepath: os.chdir(exepath[:exepath.rfind('\\')])

4 votes

Cette information est périmée. Le gestionnaire de dépôt WSH a été ajouté à l'installateur de Python en 2.6.1 (2008-12). Cependant, un nouveau gestionnaire de dépôt a été créé pour 3.6.0 (2016-12) et 3.5.3 (2017-01) car le gestionnaire WSH ne prend pas en charge les chemins Unicode. Tant que les fichiers .py sont associés à l'extension Python.File progid, cela devrait juste fonctionner pour toutes les versions de CPython qui sont actuellement supportées sous Windows. Mais c'est une bonne idée d'installer la version 3.5.3+ pour obtenir le nouveau gestionnaire de dépôt.

45voto

marco Points 101

Écrire un simple shell script ( file.bat )

"C:\python27\python.exe" yourprogram.py %*

%* représente l'ensemble des arguments que vous passez au script.

Maintenant, faites glisser et déposez vos fichiers cibles sur le file.bat icône.

0 votes

Comment accéder à la liste des arguments en Python ?

1 votes

Vous pouvez accéder à chaque argument par for arg in sys.argv[1:]: print(arg)

0 votes

On dirait que les fichiers sont dans un ordre aléatoire. Y a-t-il un moyen de préserver l'ordre dans lequel ils ont été sélectionnés ?

18voto

halanson Points 106

Avec un python installé - au moins 2.6.1 - vous pouvez simplement glisser et déposer n'importe quel fichier sur un script python.

import sys
droppedFile = sys.argv[1]
print droppedFile

sys.argv[0] est le script lui-même. sys.argv[n+1] sont les fichiers que vous avez déposés.

6voto

Evan Points 31

Essayez d'utiliser py2exe. Utilisez py2exe pour convertir votre script python en un exécutable Windows. Vous devriez alors être en mesure de faire glisser et de déposer des fichiers d'entrée vers votre script dans l'Explorateur Windows. Vous devriez également pouvoir créer un raccourci sur votre bureau et y déposer des fichiers d'entrée. Et si votre script python peut prendre une liste de fichiers, vous devriez pouvoir glisser et déposer plusieurs fichiers sur votre script (ou raccourci).

3voto

horta Points 170

Créez un raccourci du fichier. Si python n'ouvre pas les fichiers .py par défaut, allez dans les propriétés du raccourci et modifiez la cible du raccourci pour inclure la version de python que vous utilisez. Par exemple :

Cible : C:\Python26\python.exe < chemin cible du raccourci>

Je poste ceci parce que je ne voulais pas modifier le registre et que la solution de contournement .bat n'a pas fonctionné pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X