Existem muitas soluções diferentes, e os resultados dependerão fortemente de:
- o sistema operacional que você está usando: Windows, Cygwin, Linux, MacOS
- a versão python que você está usando: Python2 ou Python3x
Como eu descobri algumas coisas que dizem funcionar apenas no Windows, provavelmente não funciona, provavelmente porque eu uso o Cygwin, que está superando o sistema operacional para lidar com os caminhos do Windows. Outras coisas só funcionam em sistemas operacionais baseados em * nix puro ou em Python2 ou 3.
Aqui estão minhas descobertas:
- De um modo geral,
os.system()é o método mais tolerante.
os.startfile()é o menos indulgente. (Somente Windows && se você tiver sorte)
subprocess.Popen([...]) não recomendado
subprocess.run(winView, shell=True) a forma recomendada!
- Lembrar que usar
subprocesspara qualquer coisa pode representar um risco à segurança .
Tente esse:
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 que você deseja usar explorer no Windows?
R: Porque se você quiser apenas ver os resultados de algum novo arquivo, o explorer irá abrir automaticamente o arquivo com qualquer programa padrão do Windows que você definiu para aquele tipo de arquivo. Portanto, não há necessidade de especificar novamente o programa padrão a ser usado.