在选定的文件上运行Python脚本

我想编写一个Python脚本,可以上传我在Windows资源pipe理器中select的任何文件。 这个想法是selectWindows资源pipe理器中的任何文件,右键单击以显示文件的上下文菜单,并从那里select一个命令…像“上传到Web服务器”。

在select该命令之后,Python运行一个接收文件path和要上传文件的文件名的脚本。 编写将file upload到networking的Python脚本似乎很简单。 不清楚的是如何在Python脚本的Windows上下文菜单中创build一个实体。 以及如何将文件path和文件名传递给Python脚本来捕捉….请指教!

假设Windows 7,如果你打开一个文件夹并在地址栏中输入“shell:sendto”,然后按回车你会被带到上下文菜单。 您可以在其中添加一个.cmd文件。

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

这应该执行你的python脚本传入文件(%1)作为参数。 在python脚本中你可以使用:

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

这将得到所有传入的参数,所以sys.argv[1]应该让你传入的文件。我测试了这个,它的工作原理。 您需要.cmd文件而不是直接转到.py文件的原因是因为.py文件不会显示在“发送到”菜单中。

有关获取文件传递的更多信息在这里:
在Python中接受文件参数(从发送到上下文菜单)

编辑:添加脚本调用多个文件。 请注意,这将调用每个单独文件上的python脚本,如果要将所有文件作为参数发送到python脚本,则需要做更多的工作。 如果你想做更高级的事情,你需要研究批处理脚本。

 @echo off cls :upload_loop IF "%1"=="" GOTO completed python C:\Your\File\uploadscript.py %1 SHIFT GOTO upload_loop :completed 

%1代替%1

%1将会在第一个参数中传递, %*将全部传递( %n将在第n个参数中传递)

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

请注意,命令行内置了XP和更高版本的字符限制 2047,Windows 7和更高版本的内置了8191

要添加诸如python脚本之类的东西来右键单击上下文菜单,也可以添加注册表项(regedit)

 \HKEY_CLASSES_ROOT\Directory\Background\shell 

在那里,添加一个容器,将其命名为你想要显示在上下文菜单中的字符串。 在其中添加一个类型为REG_SZ的键,其中包含例如python脚本启动器

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

我不知道如何使用上述解决方案将多个文件选择到sys.argv中,但我认为这也值得一提。

这个网页添加Windows上下文菜单动作有一个很好的Python脚本,将注册一个上下文菜单将文件路径传递到您的Python脚本。 我还没有尝试,但看起来很容易修改这个样本,你需要做的。 另外,这种方法是一个点击少于sendTo解决方案,我猜。