Istnieje wiele różnych rozwiązań, a wyniki będą w dużym stopniu zależały od:
- używany system operacyjny : Windows, Cygwin, Linux, MacOS
- używana wersja języka Python: Python2 lub Python3x
Ponieważ odkryłem, że niektóre rzeczy, o których twierdzi się, że działają tylko w systemie Windows, nie działają, prawdopodobnie dlatego, że używam Cygwin, który przechytrza sposób systemu operacyjnego, aby radzić sobie ze ścieżkami systemu Windows. Inne rzeczy działają tylko w systemach operacyjnych opartych na czystym * nix lub w Python2 lub 3.
Oto moje ustalenia:
- Ogólnie rzecz biorąc,
os.system()
jest to najbardziej wybaczająca metoda.
os.startfile()
jest najmniej wyrozumiały. (Tylko Windows &&, jeśli masz szczęście)
subprocess.Popen([...])
nie zalecane
subprocess.run(winView, shell=True)
zalecany sposób!
- Pamiętając, że używanie
subprocess
do czegokolwiek może stanowić zagrożenie dla bezpieczeństwa .
Spróbuj tych:
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)
P: Dlaczego chcesz używać explorer
w systemie Windows?
Odp .: Ponieważ jeśli chcesz tylko spojrzeć na wyniki jakiegoś nowego pliku, eksplorator automatycznie otworzy plik za pomocą dowolnego domyślnego programu Windows, który ustawiłeś dla tego typu pliku. Nie ma więc potrzeby ponownego określania domyślnego programu do użycia.