Theo những gì tôi biết, Python có 3 cách để tìm ra hệ điều hành đang chạy:
os.name
sys.platform
platform.system()
Biết thông tin này thường hữu ích trong việc nhập có điều kiện hoặc sử dụng chức năng khác nhau giữa các nền tảng (ví dụ: time.clock()
trên Windows và time.time()
trên UNIX).
Câu hỏi của tôi là, tại sao có 3 cách khác nhau để làm điều này? Khi nào thì nên sử dụng một cách chứ không phải một cách khác? Cách nào là 'tốt nhất' (chắc chắn nhất trong tương lai hoặc ít có khả năng vô tình loại trừ một hệ thống cụ thể mà chương trình của bạn thực sự có thể chạy trên đó)?
Nó có vẻ như sys.platform
cụ thể hơn os.name
, cho phép bạn phân biệt win32
từ cygwin
(trái ngược với chỉ nt
) và linux2
từ darwin
(trái ngược với chỉ posix
). Nhưng nếu vậy, đó là sự khác biệt giữa sys.platform
và platform.system()
?
Ví dụ, cái nào tốt hơn, cái này:
import sys
if sys.platform == 'linux2':
# Do Linux-specific stuff
hay cái này? :
import platform
if platform.system() == 'Linux':
# Do Linux-specific stuff
Hiện tại, tôi sẽ tiếp tục sys.platform
, vì vậy câu hỏi này không đặc biệt khẩn cấp, nhưng tôi sẽ rất biết ơn vì đã giải thích rõ về vấn đề này.
sys.platform.startswith('linux')
thay vìsys.platform == 'linux2'
để tương thích trong tương lai