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