Є безліч різних рішень, і результати будуть сильно залежати від:
- ОС, яку ви використовуєте: 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
...
# chose one of these:
os.system(winView)
subprocess.Popen(['/cygdrive/c/Windows/explorer.exe', 'somefile.png'])
subprocess.run(winView, shell=True)
З: Чому ви хочете використовувати explorer
в Windows?
В: Тому що, якщо ви просто хочете переглянути результати якогось нового файлу, Провідник автоматично відкриє файл із будь-якою програмою Windows за замовчуванням, яку ви встановили для цього типу файлу. Тож не потрібно повторно вказувати програму за замовчуванням для використання.