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

时间:2008-09-27 03:02:30

标签: python windows drag-and-drop windows-explorer

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

是否需要在某处为此工作进行某种配置?

8 个答案:

答案 0 :(得分:50)

不确定。从mindless technology article called "Make Python Scripts Droppable in Windows"开始,您可以通过添加注册表项来添加删除处理程序:

  

这是一个可用于执行此操作的注册表导入文件。复制   进入.reg文件并运行它   (确保你的.py扩展名   映射到Python.File)。

Windows Registry Editor Version 5.00

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

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

该帖子中的评论表明,可以使用.pyw启用“无控制台Python文件(.pyc)”或“编译的Python文件(Python.NoConFile)”。 Python.CompiledFile课程。

答案 1 :(得分:26)

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

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

其中%*代表您传递给脚本的所有参数。

现在拖累&将目标文件放在file.bat图标上。

答案 2 :(得分:8)

安装了python - 至少2.6.1 - 你可以将任何文件拖放到python脚本上。

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

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

答案 3 :(得分:5)

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

答案 4 :(得分:2)

创建文件的快捷方式。如果您没有默认的python open .py文件,请进入快捷方式的属性并编辑快捷方式的目标以包含您正在使用的python版本。例如:

目标:C:\ Python26 \ python.exe<快捷方式目标路径>

我发布这个是因为我不想编辑注册表而且.bat解决方法对我不起作用。

答案 5 :(得分:1)

迟到的答案,但此页面上的所有答案都不适合我。
我设法启用/修复拖放到 .py 脚本使用:

  1. HKEY_CLASSES_ROOT\.py -> 将默认值设置为 Python.File

  2. HKEY_CLASSES_ROOT\Python.File\Shell\Open -> 创建一个名为 Command 的键,默认值为 "C:\Windows\py.exe" "%1" %*

  3. CLASSES_ROOT\Applications\py.exe\open\command -> 如果不存在则创建键并将默认值设置为 "C:\Windows\py.exe" "%1" %*

  4. CLASSES_ROOT\Python.File\ShellEx -> 使用默认值 DropHandler 创建密钥 {86C86720-42A0-1069-A2E8-08002B30309D}

就是这样。通过将文件拖到 python 脚本上来测试它:

import sys

args = sys.argv
print(args)

答案 6 :(得分:0)

1)。创建.py
的快捷方式 2)。右键单击->属性
3)。在“目标:”前面加上“ python”前缀,以便将.py作为参数运行到python命令中

1)。创建一个.bat
2)。 python some.py%*

这些快捷方式版本对我来说是最简单的事情
否则,我会将其转换为.exe,但宁愿只使用Java或c / c ++

答案 7 :(得分:0)

对于那些在.py脚本中使用argv但仍然无法拖动文件执行的人, 这可以通过简单地使用 Python Launcher(带有火箭图标)

来解决

脚本属性“打开文件”被设置为python.exe, 不知道脚本需要命令行参数“%*”

参考:https://bugs.python.org/issue40253