Exécuter le Script Python sur le fichier sélectionné

je voudrais écrire un script python qui chargerait n'importe quel fichier que je sélectionne dans Windows Explorer. L'idée est de sélectionner n'importe quel fichier dans L'Explorateur de Windows, clic droit pour afficher le Menu contextuel du fichier et sélectionner une commande à partir de là... quelque chose comme "Télécharger vers le Serveur Web".

une fois la commande sélectionnée, le Python exécute un script qui reçoit le chemin du fichier et le nom du fichier à télécharger. L'écriture du script Python qui va télécharger le fichier sur le web semble être simple. Ce qui n'est pas clair, c'est comment créer une entité dans le Menu contextuel de Windows pour le Script Python. Et comment passer le chemin du fichier et le nom du fichier au script Python pour l'attraper.... Veuillez informer!

12
demandé sur Brian Tompsett - 汤莱恩 2011-12-20 07:01:42

4 réponses

en supposant Windows 7, Si vous ouvrez un dossier et tapez "shell:sendto" dans la barre d'adresse, puis appuyez sur Entrée, vous serez amené au menu contextuel. Vous pouvez ajouter un .fichier cmd avec le suivant.

@echo off
cls
python C:\Your\File\uploadscript.py %1

ceci devrait exécuter votre script python passant dans le fichier (%1) comme paramètre. Dans le script python, vous pouvez utiliser:

import sys
sys.argv  #sys.argv[1] is the file to upload

Cela fait passer tous les paramètres ainsi sys.argv[1] devrait vous obtenir le fichier qui a été passé. J'ai testé et ça marche. Raison vous avez besoin de la .le fichier cmd au lieu d'aller directement au .py est parce que le .le fichier py n'apparaîtra pas dans le menu Envoyer à.

Plus d'informations sur le fichier transmis est ici:

Accepter des arguments en Python (à partir de l'Envoyer dans le menu contextuel)

EDIT: ajout de script pour appeler sur plusieurs fichiers. Remarque cette appelle le script python sur chaque fichier, si vous souhaitez envoyer tous les fichiers en tant que paramètre au script python, alors vous aurez besoin pour faire un peu plus de travail. Vous devez rechercher des scripts de fournée si vous voulez faire des choses plus avancées.

@echo off
cls
:upload_loop
IF "%1"=="" GOTO completed
  python C:\Your\File\uploadscript.py %1
  SHIFT
  GOTO upload_loop
:completed
21
répondu Genzume 2017-05-23 11:54:39

au Lieu de %1 utiliser %*.

%1 passera dans le premier argument,%* va passer tous les (%n passeront dans le nth...)

@echo off
cls
python C:\Your\File\uploadscript.py %*

Notez que la ligne de commande a construit en les limites de caractères 2047 pour XP et avant, 8191 pour windows 7 et les versions ultérieures

3
répondu Brian 2014-05-28 21:27:24

pour ajouter des choses telles que des scripts python au menu contextuel du clic droit, il est également possible d'ajouter des clés de registre (regedit) dans

\HKEY_CLASSES_ROOT\Directory\Background\shell

là, ajouter un conteneur, lui donner le nom de la chaîne que vous voulez voir apparaître dans le menu contextuel. Y ajouter une touche de type REG_SZ, qui contient le lanceur de script python par exemple

C:\Python27\python.exe "C:\path\to\your\script\yourscript.py"

Je ne sais pas comment faire ce travail avec la solution mentionnée ci-dessus pour obtenir plusieurs sélections de fichier dans sys.argv, mais je pensais que ce serait m'intéressant de mentionner ici.

3
répondu user3367775 2014-05-29 09:28:22

cette page web Ajout de Windows menu contextuel actions a un bon script python qui enregistrera un menu contextuel pour passer le chemin du fichier à votre script python. Je n'ai pas essayé, mais il semble facile de modifier cet échantillon à ce que vous devez faire. De plus, de cette façon, il est un claquement de moins que la solution sendTo je suppose.

1
répondu otterb 2013-07-05 14:23:47