我正在考虑沿webbrowser模块的方向,但是对于文件浏览器。在Windows中,我想打开资源管理器,在Linux上的GNOME上打开nautilus,在KDE上打开Konqueror等等。如果我可以避免它,我宁愿不要把它弄糟。 ;-)是否有跨平台的方式来打开Python中的文件浏览器?
12
A
回答
16
我宁愿不杂牌它,如果我能避免它。
Weeell我想你会需要嗅探平台杂牌的一点点,但希望不如阴森命令嗅探webbrowser
模块。这里有第一个刺伤它:
if sys.platform=='win32':
subprocess.Popen(['start', d], shell= True)
elif sys.platform=='darwin':
subprocess.Popen(['open', d])
else:
try:
subprocess.Popen(['xdg-open', d])
except OSError:
# er, think of something else to try
# xdg-open *should* be supported by recent Gnome, KDE, Xfce
注意win32版本目前将失败的文件名空格。 Bug 2304可能是与这,但似乎是与参数逃逸,Windows外壳程序(cmd /c ...
)一个基本问题,即不能嵌套双引号,你不能^ -escape引号或空格。我还没有设法找到任何方法从命令行引用并运行cmd /c start C:\Documents and Settings
。
ETA重新nosklo的评论:仅在Windows上,有一个内置的方式做到这一点:
if sys.platform=='win32':
os.startfile(d)
这里是不是非常不错的替代解决方案找到外壳并打开一个文件夹,它,你不应该现在需要的,但我会离开(部分原因是它可能是用别的东西的,但主要是因为我花了键入该死的东西的时候了!)
if sys.platform=='win32':
import _winreg
path= r'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon')
for root in (_winreg.HKEY_CURRENT_USER, _winreg.HKEY_LOCAL_MACHINE):
try:
with _winreg.OpenKey(root, path) as k:
value, regtype= _winreg.QueryValueEx(k, 'Shell')
except WindowsError:
pass
else:
if regtype in (_winreg.REG_SZ, _winreg.REG_EXPAND_SZ):
shell= value
break
else:
shell= 'Explorer.exe'
subprocess.Popen([shell, d])
-1
-1
我不知道是否准备使用的模块存在,但如果有,应该是在ActiveState的蟒蛇cookbok(http://code.activestate.com/recipes/langs/python/)
此外,至少在GNOME和Mac OS上,你可以执行“gnome-open http://blah”和“打开http://blah”(在mac上);两者都会在用户首选的浏览器中打开网址。
对于Linux还检查freedesktop.org - 一套共同的涵盖Gnome和KDE的工具,这应该包括类似的东西。
相关问题
- 1. 跨平台,跨浏览器的方式来播放Javascript的声音?
- 2. 嵌入式跨平台Web浏览器?
- 3. 使用Java 1.5跨平台打开文件的方式
- 4. 是否有一种跨平台的方式来访问JSP servlet?
- 5. 在Javascript中是否有跨浏览器设置style.float的方式?
- 6. 针对平板电脑的跨平台非浏览器开发?
- 7. 是否有跨浏览器的方式来忽略XHR引发的401错误?
- 8. 是python跨平台的pickle文件吗?
- 9. 编程方式打开文件对话框中的浏览器
- 10. 在浏览器中获取选定的文本,跨平台
- 11. 如何开发跨平台和跨浏览器兼容性的浏览器插件?
- 12. 是否有任何跨平台的方式来验证xml在JavaScript中的xsd?
- 13. 跨平台方式读取Python中的Excel文件?
- 14. 什么是跨浏览器,跨平台网页安全字体?
- 15. 跨浏览器是否READYSTATE_LOADED?
- 16. 是否有开源的跨平台推送服务器?
- 17. 跨平台,跨浏览器的JavaScript性能分析
- 18. 是否有从Python的OSError获取信息的跨平台方式?
- 19. Python:跨平台代码来下载有效的.zip文件
- 20. 用Python在特定文件夹中打开文件浏览器
- 21. 是否有getSelection()的跨浏览器解决方案?
- 22. 什么是在python中播放声音文件的跨平台方式?
- 23. 从浏览器中打开.ics文件
- 24. 禁用浏览器平台/在浏览器平台上登录
- 25. 打开的文件已经在窗口浏览器中打开
- 26. 跨平台的方式来获得在python
- 27. 是否有一个jQuery的跨浏览器方法来强制页面重载
- 28. 在python中是否有跨平台的方式来确定哪个进程正在侦听给定的端口?
- 29. 跨平台的Python可执行文件
- 30. 是否有任何方式或脚本仅在Chrome浏览器中打开我的网站,而不是在任何其他浏览器中打开?
自从“文件浏览器“不是一个跨平台的功能,具体是什么 - 你在说什么?你在谈论某种“跨平台”的GUI窗口吗?你看过哪些GUI工具包,符合你的“跨平台”定义? – 2009-11-25 11:46:44
@ S.Lott:不是一个Python进程拥有的GUI窗口 - 就像webbrowser那样,适合用户的操作环境,这个窗口就是一个本地子进程。 – cdleary 2009-11-25 21:27:26