文件拖动到 Python 脚本上执行
将文件拖拽到.py文件上以处理它(从DropHandler说起)
windows默认情况下,拖动文件到一个python脚本上面,会把这个python脚本挤走,而不会执行python脚本。因为windows认为python脚本不是一个合法的可拖放的目的对象(drop target)
观察能够在win10下支持拖拽效果的的两类文件.vbs和bat
它们都有一个DropHandler项目:
计算机\HKEY_CLASSES_ROOT\batfile\shellex\DropHandler
计算机\HKEY_CLASSES_ROOT\VBSFile\ShellEx\DropHandler
其对应的值分别为
{86C86720-42A0-1069-A2E8-08002B30309D}
{60254CA5-953B-11CF-8C96-00AA00B8708C}
观察其效果:
- bat 对应的拖拽效果为 打开 ,其传递给程序的文件路径为8.3格式的缩略路径
- vbs 对应的拖拽效果为 复制 ,其传递给程序的文件路径为全路径
所以,可以通过 {60254CA5-953B-11CF-8C96-00AA00B8708C}
和{86C86720-42A0-1069-A2E8-08002B30309D}
两个 DropHandler 项目来控制某种扩展名上的拖拽效果
于是可以使用新建下述文件 Python.reg
导入:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Python.File\shellex\DropHandler]
@="{86C86720-42A0-1069-A2E8-08002B30309D}"
刷新图标覆盖(注销或重启电脑)后 .py
文件即可获得拖拽效果
此外,会使用哪个解释器运行,由 计算机\HKEY_CLASSES_ROOT\Python.File\Shell\open\command
的值决定,例如要使用 pyhton3.8,就是:
"D:\Users\Haujet\AppData\Local\Programs\Python\Python38\python.exe" "%1" %*
其中的解释器路径要填绝对路径。
虽然我运行 python 命令是默认 3.8,但当注册表那里填写的解释器路径是
python
时,它就不会使用 python3.8,很奇怪。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?