在资源管理器中将文件拖放到Python脚本上

61 投票
8 回答
75632 浏览
提问于 2025-04-11 09:28

我想把我的数据文件拖到一个Python脚本上,让它处理这个文件并生成输出。这个Python脚本可以接受数据文件的名字作为命令行参数,但Windows资源管理器不允许我把脚本当作拖放的目标。

有没有什么设置需要做才能实现这个功能呢?

8 个回答

19

如果你已经安装了Python,版本至少是2.6.1,你可以直接把任何文件拖到一个Python脚本上。

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

sys.argv[0]代表的就是这个脚本本身。而sys.argv[n+1]就是你拖进去的文件。

46

写一个简单的脚本文件(file.bat

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

这里的 %* 代表你传给这个脚本的所有参数。

现在,把你想要处理的文件拖到 file.bat 的图标上。

63

当然可以。从一篇叫做“在Windows中让Python脚本可拖放”的文章中,你可以通过添加一个注册表项来实现拖放功能:

这里有一个注册表导入文件,你可以用它来完成这个操作。把下面的内容复制到一个 .reg 文件中,然后运行它(确保你的 .py 文件扩展名已经关联到 Python.File)。

Windows Registry Editor Version 5.00

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

这样做会让Python脚本使用WSH的拖放处理程序,这个处理程序支持长文件名。如果你想使用短文件名的处理程序,可以把GUID替换为 86C86720-42A0-1069-A2E8-08002B30309D

文章中还有一个评论提到,可以通过使用 Python.NoConFilePython.CompiledFile 类来启用对“无控制台的Python文件(.pyw)”或“编译后的Python文件(.pyc)”的拖放支持。

撰写回答