Có vô số giải pháp khác nhau và kết quả sẽ phụ thuộc nhiều vào:
- hệ điều hành bạn đang sử dụng: Windows, Cygwin, Linux, MacOS
- phiên bản python bạn đang sử dụng: Python2 hoặc Python3x
Như tôi đã phát hiện ra một số thứ được cho là chỉ hoạt động trong Windows, thì không, có thể là do tôi tình cờ sử dụng Cygwin, công cụ này đang vượt xa cách hệ điều hành để xử lý các đường dẫn Windows. Những thứ khác chỉ hoạt động trong hệ điều hành dựa trên * nix thuần túy hoặc trong Python2 hoặc 3.
Đây là những phát hiện của tôi:
- Nói chung,
os.system()
là phương pháp dễ tha thứ nhất.
os.startfile()
là ít tha thứ nhất. (Chỉ dành cho Windows && nếu bạn may mắn)
subprocess.Popen([...])
không được khuyến khích
subprocess.run(winView, shell=True)
cách được đề nghị!
- Hãy nhớ rằng sử dụng
subprocess
cho bất cứ thứ gì có thể gây ra rủi ro bảo mật .
Thử những thứ này xem:
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)
Q: Tại sao bạn muốn sử dụng explorer
trong Windows?
A: Bởi vì nếu bạn chỉ muốn xem kết quả của một số tệp mới, explorer sẽ tự động mở tệp bằng bất kỳ chương trình windows mặc định nào bạn đã đặt cho loại tệp đó. Vì vậy, không cần chỉ định lại chương trình mặc định để sử dụng.