我正在考慮沿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. 跨瀏覽器打開文件瀏覽對話框
- 8. 是否有跨瀏覽器的方式來忽略XHR引發的401錯誤?
- 9. 是否有跨瀏覽器的方式來關閉使用JavaScript的Cookie?
- 10. 是python跨平臺的pickle文件嗎?
- 11. 編程方式打開文件對話框中的瀏覽器
- 12. 跨瀏覽器平臺測試
- 13. 跨瀏覽器平臺數據存儲
- 14. 檢測跨瀏覽器平臺
- 15. 跨平臺瀏覽器檢測
- 16. 在瀏覽器中獲取選定的文本,跨平臺
- 17. 如何開發跨平臺和跨瀏覽器兼容性的瀏覽器插件?
- 18. 是否有任何跨平臺的方式來驗證xml在JavaScript中的xsd?
- 19. 跨平臺方式讀取Python中的Excel文件?
- 20. 打開文件瀏覽器?
- 21. 什麼是跨瀏覽器,跨平臺網頁安全字體?
- 22. 如何以平臺無關的方式啓動Jetty並打開瀏覽器
- 23. 跨瀏覽器是否READYSTATE_LOADED?
- 24. 是否有跨平臺的方式來檢測調試模式編譯?
- 25. 是否有開源的跨平臺推送服務器?
- 26. 是否有跨瀏覽器和跨框架方式來檢查對象是否是HTML元素?
- 27. Adobe Illustrator在瀏覽器快捷方式中打開文件
- 28. 是否有從Python的OSError獲取信息的跨平臺方式?
- 29. 跨瀏覽器/跨平臺的離線手機應用
- 30. 跨平臺,跨瀏覽器的JavaScript性能分析
自從「文件瀏覽器「不是一個跨平臺的功能,具體是什麼 - 你在說什麼?你在談論某種「跨平臺」的GUI窗口嗎?你看過哪些GUI工具包,符合你的「跨平臺」定義? – 2009-11-25 11:46:44
@ S.Lott:不是一個Python進程擁有的GUI窗口 - 就像webbrowser那樣,適合用戶的操作環境,這個窗口就是一個本地子進程。 – cdleary 2009-11-25 21:27:26