在Windows资源管理器中拖放到Python脚本

gro*_*rok 47 python windows drag-and-drop windows-explorer

我想将我的数据文件拖放到Python脚本上,让它处理文件并生成输出.Python脚本接受数据文件的名称作为命令行参数,但Windows资源管理器不允许脚本成为放置目标.

是否有某种配置需要在这个工作的某个地方完成?

Bla*_*rad 51

当然.从一篇名为"在Windows中制作Python脚本可删除"无心技术文章中,您可以通过添加注册表项来添加删除处理程序:

这是一个注册表导入文件,您可以使用它来执行此操作.将以下内容复制到.reg文件中并运行它(确保.py扩展名映射到Python.File).

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Python.File\shellex\DropHandler]
@="{60254CA5-953B-11CF-8C96-00AA00B8708C}"
Run Code Online (Sandbox Code Playgroud)

这使得Python脚本使用WSH丢弃处理程序,该处理程序与长文件名兼容.要使用短文件名处理程序,请将GUID替换为86C86720-42A0-1069-A2E8-08002B30309D.

该帖子中的注释表明可以通过使用和类来启用"无控制台Python文件(.pyw)"或"编译的Python文件(.pyc)" .Python.NoConFilePython.CompiledFile

  • 在脚本文件图标上. (3认同)
  • 此信息已过时.WSH下拉处理程序已添加到2.6.1(2008-12)中的Python安装程序中.但是,为3.6.0(2016-12)和3.5.3(2017-01)创建了一个新的drop handler,因为WSH处理程序不支持Unicode路径.只要.py文件与`Python.File` progid相关联,这应该适用于Windows当前支持的所有CPython版本.但是安装3.5.3+以获得新的drop处理程序是个好主意. (3认同)
  • 谁能澄清“确保您的 .py 扩展名映射到 Python.File”是什么意思?我默认将 .py 文件设置为使用 python.exe 打开,但此 reg 脚本不允许我拖放它们。 (2认同)

小智 29

写一个简单的shell脚本(file.bat)

"C:\python27\python.exe" yourprogram.py %*
Run Code Online (Sandbox Code Playgroud)

其中%1代表您传递给脚本的第一个参数.

现在将%目标文件拖放到file.bat图标上.

  • "c:\ Python27\python.exe"yourprogram.py%*捕获多个拖动的文件 (8认同)

hal*_*son 11

使用已安装的python(至少2.6.1),您只需将任何文件拖放到python脚本上即可.

import sys
droppedFile = sys.argv[1]
print droppedFile
Run Code Online (Sandbox Code Playgroud)

sys.argv[0]是脚本本身.sys.argv[n+1]是您丢弃的文件.


小智 6

尝试使用py2exe.使用py2exe将python脚本转换为Windows可执行文件.然后,您应该能够在Windows资源管理器中将输入文件拖放到脚本中.您还应该能够在桌面上创建快捷方式并将输入文件拖放到桌面上.如果您的python脚本可以获取文件列表,您应该能够在脚本(或快捷方式)上拖放多个文件.

  • 这种方法也适用于PyInstaller。 (2认同)