Существует множество различных решений, и результаты будут сильно зависеть от:
- ОС, которую вы используете: Windows, Cygwin, Linux, MacOS
- версия python, которую вы используете: Python2 или Python3x
Поскольку я обнаружил, что некоторые вещи, которые, как утверждается, работают только в Windows, нет, вероятно, потому, что я использую Cygwin, который перехитрил способ ОС для работы с путями Windows. Остальное работает только в ОС на основе чистого * nix или в Python2 или 3.
Вот мои выводы:
- Вообще говоря,
os.system()
это самый щадящий метод.
os.startfile()
наименее прощающий. (Только для Windows &&, если повезет)
subprocess.Popen([...])
не рекомендуется
subprocess.run(winView, shell=True)
рекомендуемый способ!
- Помните, что использование
subprocess
для чего-либо может представлять угрозу безопасности .
Попробуйте эти:
import os, subprocess
...
winView = '/cygdrive/c/Windows/explorer.exe %s' % somefile
...
os.system(winView)
subprocess.Popen(['/cygdrive/c/Windows/explorer.exe', 'somefile.png'])
subprocess.run(winView, shell=True)
В: Почему вы хотите использовать explorer
в Windows?
A: Потому что, если вы просто хотите посмотреть результаты какого-то нового файла, проводник автоматически откроет файл с любой программой Windows по умолчанию, которую вы установили для этого типа файла. Поэтому нет необходимости повторно указывать программу по умолчанию для использования.