59

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

这项工作是否需要在某处进行某种配置?

4

8 回答 8

59

当然。从一篇名为“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 删除处理程序。要使用短文件名处理程序,请将 GUID 替换为86C86720-42A0-1069-A2E8-08002B30309D.

该帖子中的一条评论表明,可以通过使用和类启用删除“无控制台 Python 文件 ( .pyw)”或“已编译的 Python 文件 ( )”。.pycPython.NoConFilePython.CompiledFile

于 2008-09-27T03:06:25.640 回答
41

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

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

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

现在将您的目标文件拖放到file.bat图标上。

于 2012-04-20T12:21:36.480 回答
16

使用已安装的 python - 至少 2.6.1 - 您可以将任何文件拖放到 python 脚本上。

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

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

于 2017-08-10T15:04:26.917 回答
6

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

于 2010-12-20T02:47:21.920 回答
2

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

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

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

于 2014-02-17T22:23:58.620 回答
2

1)。创建 .py
2) 的快捷方式。右键单击-> 属性
3)。将“目标:”与“python”作为前缀,因此它将 .py 作为参数运行到 python 命令

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

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

于 2018-12-03T02:29:16.137 回答
2

迟到的答案,但此页面上的所有答案都不适合我。
我设法使用以下方法启用/修复拖放到.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)
于 2021-01-24T16:45:42.280 回答
0

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

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

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

于 2021-02-03T07:59:56.963 回答