Làm cách nào để kiểm tra hệ điều hành trong Python?


148

Tôi muốn kiểm tra hệ điều hành (trên máy tính nơi tập lệnh chạy).

Tôi biết tôi có thể sử dụng os.system('uname -o')trong Linux, nhưng nó cho tôi một thông báo trong bảng điều khiển và tôi muốn viết cho một biến.

Sẽ ổn thôi nếu tập lệnh có thể cho biết đó là Mac, Windows hay Linux. Làm thế nào tôi có thể kiểm tra nó?



Câu trả lời:


287

Bạn có thể sử dụng sys.platform:

from sys import platform
if platform == "linux" or platform == "linux2":
    # linux
elif platform == "darwin":
    # OS X
elif platform == "win32":
    # Windows...

sys.platformcó độ chi tiết mịn hơn sys.name.

Đối với các giá trị hợp lệ, tham khảo tài liệu .

Xem thêm câu trả lời cho hệ điều hành Tôi đang chạy trên hệ điều hành nào?


8
Lưu ý rằng trong cygwin, nó trả về "cygwin"không "win32"như ai đó có thể mong đợi.
Michał Bentkowski

21
Cảm ơn. Sự khác biệt giữa linux và linux2 là gì?
Tharindu Rusira

1
đầu ra cho BSD sẽ là gì?
galois 28/03/2015

1
Lưu ý rằng vì Python 3.3, "linux2"không còn là giá trị có thể của platform(xem các tài liệu được liên kết để ăn mòn) và vì vậy nếu bạn chỉ cần hỗ trợ Python 3.3 và sau đó bạn có thể xóa mệnh đề `hoặc platform ==" linux2 "` khỏi điều kiện đầu tiên
Đánh dấu

23

Nếu bạn muốn biết bạn đang sử dụng nền tảng nào ngoài "Linux", "Windows" hoặc "Darwin" (Mac), mà không cần chính xác hơn, bạn nên sử dụng:

>>> import platform
>>> platform.system()
'Linux'  # or 'Windows'/'Darwin'

Các platform.systemchức năng sử dụng unamenội bộ.


1
Tôi thích giải pháp này nhưng tôi muốn chỉ ra rằng từ các tài liệu nó nói rằng nó sẽ trở lại Linux, Windows, Javahoặc một chuỗi rỗng. devdocs.io/python~3.7/l Library / pl platform # pl platform.system
Brandon

2
@BrandonBenefield, phép liệt kê là một ví dụ về các giá trị có thể. Trên các thiết bị của Apple, nó trả về Hồi giáo Darwin.
Laurent LAPORTE

15

Bạn có thể có được một ý tưởng khá thô về HĐH bạn đang sử dụng bằng cách kiểm tra sys.platform.

Khi bạn có thông tin đó, bạn có thể sử dụng thông tin đó để xác định xem việc gọi một cái gì đó như thế nào os.uname()là phù hợp để thu thập thông tin cụ thể hơn. Bạn cũng có thể sử dụng một cái gì đó như Thông tin hệ thống Python trên các hệ điều hành giống như unix hoặc pywin32 cho Windows.

Cũng có psutil nếu bạn muốn kiểm tra chuyên sâu hơn mà không muốn quan tâm đến HĐH.


6

Thông tin chi tiết có sẵn trong các platformmô-đun .


Liệu các platformmô-đun có bất kỳ lợi thế hơn sys.platform? Khi nào tôi muốn sử dụng phương pháp nào?
matth

@matth: Bạn nhận được thông tin chi tiết hơn, có cấu trúc từ platformmô-đun. Chỉ cần nhấp vào liên kết cho tài liệu.
Sven Marnach

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.