Estoy pensando algo así como en el módulo webbrowser, pero para navegadores de archivos. En Windows, me gustaría abrir el explorador, en GNOME en Linux, quiero abrir Nautilus, Konqueror en KDE, etc. Prefiero no criticarlo si puedo evitarlo. ;-)¿Existe alguna forma de plataforma cruzada para abrir un buscador de archivos en Python?
Respuesta
Preferiría no arriesgarme si puedo evitarlo.
Weeell creo que va a necesitar un poco de kludge plataforma rastreadores, pero espero que no tanto como el módulo de comando espantosa rastreadores webbrowser
. He aquí una primera puñalada en ella:
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
Nota la versión Win32 Actualmente fallará para espacios en los nombres de archivo. Bug 2304 podría tener algo que ver con eso, pero parece que hay un problema básico con el escape de parámetros y el shell de Windows (cmd /c ...
), en el sentido de que no puede anidar comillas dobles y no puede^-escape citas o espacios . No he logrado encontrar ninguna manera de citar y ejecutar cmd /c start C:\Documents and Settings
desde la línea de comandos.
ETA re comentario de nosklo: sólo en Windows, hay una forma integrada de hacerlo:
if sys.platform=='win32':
os.startfile(d)
Aquí está la solución alternativa no muy agradable para encontrar la cáscara y abrir una carpeta con ella , que usted no debe necesitar ahora, pero voy a dejar en. (en parte porque podría ser de utilidad para otra cosa, pero sobre todo porque me he pasado el tiempo para escribir la maldita cosa!)
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])
Esta es una puñalada completa en la oscuridad, pero echa un vistazo a wxPython que proporciona enlaces de Python a la biblioteca subyacente wxWidgets. Ha pasado mucho tiempo desde la última vez que lo miré, pero podría haber algo allí que puedas usar. De lo contrario, debería ser relativamente fácil crear su propio explorador de archivos que usará los "widgets" nativos para cada sistema operativo.
Tenga en cuenta que wxPython no es liviano, realmente aumentará su aplicación y aumentará sus dependencias.
no sé si existe un módulo listo para su uso, pero si la hay, que debería estar en cookbok pitón del Activestate (http://code.activestate.com/recipes/langs/python/)
también, al menos en GNOME y en Mac OS, puede ejecutar "gnome-open http://blah" y "abrir http://blah" (en mac); ambos abrirán la url en el navegador preferido del usuario.
Para Linux también consulte freedesktop.org - un conjunto común de herramientas que cubre tanto Gnome como KDE, que debería incluir algo similar.
- 1. módulo usb de plataforma cruzada para python?
- 2. ¿Qué es una forma de plataforma cruzada para reproducir un archivo de sonido en python?
- 3. Forma de plataforma cruzada para abrir un archivo usando Java 1.5
- 4. ¿Existe una forma de plataforma cruzada no java para iniciar la aplicación asociada para un determinado tipo de archivo?
- 5. Forma de plataforma cruzada para obtener el directorio temporal en Python
- 6. desarrollo de plataforma cruzada
- 7. Forma de plataforma cruzada para obtener PID por nombre de proceso en python
- 8. Operaciones de escritura de archivos atómicos (plataforma cruzada)
- 9. ¿Cuál es la mejor manera de verificar si un archivo existe en C++? (plataforma cruzada)
- 10. ¿Existe: buscador de código repetido?
- 11. C++ - Cómo configurar permisos de archivos (plataforma cruzada)
- 12. Asterisk plataforma cruzada compilación
- 13. ¿Forma de plataforma cruzada para comprobar los derechos de administrador en una secuencia de comandos de Python en Windows?
- 14. plataforma cruzada .Net?
- 15. ¿Forma de plataforma cruzada para producir un hilo en C/C++?
- 16. Fuzzyfinder: ¿alguna forma de abrir múltiples archivos a la vez?
- 17. API TCP/IP simple de plataforma cruzada?
- 18. Python 2.5.2: intentar abrir los archivos de forma recursiva
- 19. ¿Hay una biblioteca de plataforma cruzada C++?
- 20. Plataforma cruzada ligera C GUI (OpenGL)
- 21. Función de suspensión de plataforma cruzada para C++
- 22. API de sonido de plataforma cruzada para juegos?
- 23. Comenzando con un proyecto de C + + de plataforma cruzada
- 24. ¿Cómo imprimo en la impresora predeterminada del sistema operativo en Python 3 (plataforma cruzada)?
- 25. ¿Qué lenguaje de scripting de plataforma cruzada debemos adoptar para un grupo de DBA?
- 26. forma de plataforma cruzada para cambiar la prioridad del proceso java
- 27. ¿Qué es una forma de plataforma cruzada para obtener el directorio actual?
- 28. ¿Volver a abrir archivos en Python?
- 29. Fast-a-carga alternativa de plataforma cruzada a los archivos MX (Mathematica)
- 30. Plataforma cruzada, Lenguaje de marcado GUI agnóstico de idioma?
Desde " buscador de archivos "no es una función multiplataforma, ¿de qué está hablando específicamente? ¿Estás hablando de algún tipo de ventana GUI que es "multiplataforma"? ¿Qué herramientas GUI has visto que cumplan con tu definición de "multiplataforma"? –
@ S.Lott: No es una ventana de la GUI propiedad del proceso de Python: realizar un bombardeo en un subproceso nativo en el mismo sentido en que lo hace 'webbrowser', apropiado para el entorno operativo del usuario. – cdleary