我想将我的数据文件拖放到 Python 脚本上,让它处理文件并生成输出。Python 脚本接受数据文件的名称作为命令行参数,但 Windows 资源管理器不允许该脚本成为放置目标。
这项工作是否需要在某处进行某种配置?
我想将我的数据文件拖放到 Python 脚本上,让它处理文件并生成输出。Python 脚本接受数据文件的名称作为命令行参数,但 Windows 资源管理器不允许该脚本成为放置目标。
这项工作是否需要在某处进行某种配置?
当然。从一篇名为“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 文件 ( )”。.pyc
Python.NoConFile
Python.CompiledFile
编写一个简单的 shell 脚本 ( file.bat
)
"C:\python27\python.exe" yourprogram.py %*
where%*
代表您传递给脚本的所有参数。
现在将您的目标文件拖放到file.bat
图标上。
使用已安装的 python - 至少 2.6.1 - 您可以将任何文件拖放到 python 脚本上。
import sys
droppedFile = sys.argv[1]
print droppedFile
sys.argv[0]
是脚本本身。sys.argv[n+1]
是您删除的文件。
尝试使用 py2exe。使用 py2exe 将您的 python 脚本转换为 Windows 可执行文件。然后,您应该能够将输入文件拖放到 Windows 资源管理器中的脚本中。您还应该能够在桌面上创建快捷方式并将输入文件拖放到上面。如果您的 python 脚本可以获取文件列表,您应该能够在脚本(或快捷方式)上拖放多个文件。
创建文件的快捷方式。如果默认情况下没有 python 打开 .py 文件,请进入快捷方式的属性并编辑快捷方式的目标以包含您正在使用的 python 版本。例如:
目标:C:\Python26\python.exe <快捷目标路径>
我发布这个是因为我不想编辑注册表并且 .bat 解决方法对我不起作用。
1)。创建 .py
2) 的快捷方式。右键单击-> 属性
3)。将“目标:”与“python”作为前缀,因此它将 .py 作为参数运行到 python 命令
或
1)。创建一个 .bat
2)。python some.py %*
这些快捷方式版本对我来说是最简单的,
否则我会将其转换为 .exe,但宁愿只使用 java 或 c/c++
迟到的答案,但此页面上的所有答案都不适合我。
我设法使用以下方法启用/修复拖放到.py
脚本上:
HKEY_CLASSES_ROOT\.py
-> 将默认值设置为Python.File
HKEY_CLASSES_ROOT\Python.File\Shell\Open
-> 创建一个Command
使用默认值调用的键"C:\Windows\py.exe" "%1" %*
CLASSES_ROOT\Applications\py.exe\open\command
-> 如果不存在则创建键并将默认值设置为"C:\Windows\py.exe" "%1" %*
CLASSES_ROOT\Python.File\ShellEx
-> 创建DropHandler
具有默认值的键{86C86720-42A0-1069-A2E8-08002B30309D}
就是这样。通过将文件拖到 python 脚本上来测试它:
import sys
args = sys.argv
print(args)
对于那些在.py脚本中使用argv但仍然无法拖动文件执行的人,可以通过简单地使用Python Launcher(带有火箭图标)来解决这个问题
脚本属性“打开文件”设置为 python.exe,它不知道脚本需要命令行参数“%*”