Ci sono tantissime soluzioni diverse ei risultati dipenderanno fortemente da:
- il sistema operativo in uso: Windows, Cygwin, Linux, MacOS
- la versione di Python che stai utilizzando: Python2 o Python3x
Come ho scoperto alcune cose che si dice funzionino solo in Windows, non è così, probabilmente perché mi capita di usare Cygwin che sta superando in astuzia il modo in cui il sistema operativo gestisce i percorsi di Windows. Altre cose funzionano solo in sistemi operativi puri * nix o in Python2 o 3.
Ecco i miei risultati:
- In generale,
os.system()
è il metodo più indulgente.
os.startfile()
è il meno indulgente. (Solo Windows e & se sei fortunato)
subprocess.Popen([...])
non consigliato
subprocess.run(winView, shell=True)
il modo consigliato!
- Ricordare che l'utilizzo
subprocess
per qualsiasi cosa può rappresentare un rischio per la sicurezza .
Prova questi:
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)
D: Perché vorresti usare explorer
in Windows?
A: Perché se vuoi solo guardare i risultati di qualche nuovo file, Explorer aprirà automaticamente il file con qualsiasi programma Windows predefinito che hai impostato per quel tipo di file. Quindi non è necessario specificare nuovamente il programma predefinito da utilizzare.