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
subprocess
para 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.