Hay muchas soluciones diferentes y los resultados dependerán en gran medida de:
- el sistema operativo que está utilizando: Windows, Cygwin, Linux, MacOS
- la versión de Python que está utilizando: Python2 o Python3x
Como he descubierto algunas cosas que se dice que funcionan solo en Windows, no lo hace, probablemente porque uso Cygwin, que está superando la forma del sistema operativo para lidiar con las rutas de Windows. Otras cosas solo funcionan en sistemas operativos basados en * nix puro o en Python2 o 3.
Aquí están mis hallazgos:
- En general,
os.system()
es el método más indulgente.
os.startfile()
es el que menos perdona. (Solo Windows && si tiene suerte)
subprocess.Popen([...])
no recomendado
subprocess.run(winView, shell=True)
de la forma recomendada!
- Recordar que usarlo
subprocess
para cualquier cosa puede suponer un riesgo para la seguridad .
Prueba estos:
import os, subprocess
...
winView = '/cygdrive/c/Windows/explorer.exe %s' % somefile
...
# chose one of these:
os.system(winView)
subprocess.Popen(['/cygdrive/c/Windows/explorer.exe', 'somefile.png'])
subprocess.run(winView, shell=True)
P: ¿Por qué querrías usar explorer
en Windows?
R: Porque si solo desea ver los resultados de algún archivo nuevo, el explorador abrirá automáticamente el archivo con cualquier programa de Windows predeterminado que haya configurado para ese tipo de archivo. Por tanto, no es necesario volver a especificar el programa predeterminado que se utilizará.