This makes Python scripts use the WSH drop handler, which is compatible with long filenames. To use the short filename handler, replace the GUID withHere’s a registry import file that you can use to do this. Copy the following into a .reg file and run it (Make sure that your .py extensions are mapped to Python.File).
Windows Registry Editor Version 5.00 [HKEY_CLASSES_ROOT\Python.File\shellex\DropHandler] @="{60254CA5-953B-11CF-8C96-00AA00B8708C}"
86C86720-42A0-1069-A2E8-08002B30309D
.
该操作使Python脚本使用WSH拖放处理程序,该处理程序与长文件名兼容。要使用短文件名处理程序,请将GUID替换为86C86720-42A0-1069-A2E8-08002B30309D
。
该帖子中的评论指出,可以通过使用Python.NoConFile
和Python.CompiledFile
类来启用“无控制台Python文件(.pyw
)”或“已编译的Python文件(.pyc
)”上的拖放功能。
exepath = sys.argv[0]
if '\\' in exepath:
os.chdir(exepath[:exepath.rfind('\\')])
- Bludwarf编写一个简单的shell脚本 (file.bat
)
"C:\python27\python.exe" yourprogram.py %*
%*
代表你传递给脚本的所有参数。
现在将目标文件拖放到file.bat
图标上。
for arg in sys.argv[1:]: print(arg)
访问每个参数。 - jjz如果安装了 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脚本可以接受文件列表,您应该能够将多个文件拖放到您的脚本(或快捷方式)上。
1). 创建 .py 的快捷方式
2). 右键单击 -> 属性
3). 在 "目标:"之前添加 "python",以便将 .py 作为参数运行到 python 命令中
或者
1). 创建一个 .bat
2). 运行 "python some.py %*"
这些快捷方式对我来说最简单了,可以满足我所需要的功能。否则我会将其转换为 .exe,但我更愿意使用 Java 或 C / C++。
创建文件的快捷方式。如果你没有将Python默认打开.py文件,可以进入快捷方式的属性并编辑快捷方式的目标以包括你正在使用的Python版本。例如:
目标:C:\Python26\python.exe < 快捷方式目标路径>
我发布这个帖子是因为我不想编辑注册表,而且.bat解决方法对我也不起作用。
.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)