Câu hỏi Python: Tôi đang chạy hệ điều hành nào?


Tôi cần xem xét gì nếu tôi đang sử dụng Windows, Unix, v.v ...?


423
2017-08-05 03:23


gốc


xem (bugs.python.org/issue12326) để biết chi tiết! - arnkore
Đây là câu hỏi liên quan: Kiểm tra tên distro linux. - blong


Các câu trả lời:


>>> import os
>>> print os.name
posix
>>> import platform
>>> platform.system()
'Linux'
>>> platform.release()
'2.6.22-15-generic'

Đầu ra của platform.system() là như sau:

  • Linux: Linux
  • Mac: Darwin
  • Các cửa sổ: Windows

Xem: nền tảng - Truy cập vào dữ liệu nhận dạng của nền tảng cơ bản


536
2017-08-05 03:27



Tại sao tôi nên thích platform kết thúc sys.platform? - matth
@matth Sản lượng ổn định hơn một chút. I E. platform.system() trả về "Windows" thay vì "win32". sys.platform cũng chứa "linux2" trên các phiên bản cũ của Python trong khi nó chỉ chứa "linux" trên những cái mới hơn. platform.system() đã luôn quay trở lại "Linux". - erb
Trên mac os X, platform.system () luôn trả về "Darwin"? hoặc là có trường hợp khác có thể? - baptiste chéné


Dang - lbrandy đánh tôi với cú đấm, nhưng điều đó không có nghĩa là tôi không thể cung cấp cho bạn kết quả hệ thống cho Vista!

>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'Vista'

... và tôi không thể tin rằng chưa có ai đăng một bản cho Windows 10:

>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'10'

151
2017-08-05 03:57



Windows 7: platform.release()  '7' - Hugo
Vì vậy, yeah, tôi chỉ cần chạy platform.release() về tôi các cửa sổ  10và chắc chắn nó đã cho tôi '8'. Có lẽ tôi đã cài đặt python trước khi nâng cấp, nhưng thực sự ?? - Codesmith
Tôi đã nghĩ rằng nó có nhiều khả năng bạn nâng cấp từ Windows 8 (so với nó là một cài đặt sạch) và bất cứ điều gì Python nhìn lên trong registry hoặc bất cứ điều gì đã bị bỏ lại phía sau? - OJFord
Việc tra cứu cho python trên Windows xuất hiện để sử dụng chức năng Win32 api GetVersionEx ở lõi của nó. Các ghi chú ở đầu bài viết này của Microsoft về chức năng đó có thể có liên quan: msdn.microsoft.com/en-us/library/windows/desktop/… - theferrit32


Đối với bản ghi, đây là kết quả trên máy Mac:

>>> import os
>>> os.name
'posix'
>>> import platform
>>> platform.system()
'Darwin'
>>> platform.release()
'8.11.1'

109
2017-08-05 04:13





Mã mẫu để phân biệt hệ điều hành bằng cách sử dụng python:

from sys import platform as _platform

if _platform == "linux" or _platform == "linux2":
   # linux
elif _platform == "darwin":
   # MAC OS X
elif _platform == "win32":
   # Windows
elif _platform == "win64":
    # Windows 64-bit

75
2017-09-16 07:42



Đây có phải là mã mẫu từ bất kỳ mô-đun python nào không? Đây là câu trả lời duy nhất trong thực tế, trả lời câu hỏi. - kon psych
Đối với kết quả mờ, `` _platform.startswith ('linux') - Klaatu von Schlacker
câu trả lời gốc như đã thấy ở đây stackoverflow.com/a/8220141/3286832 - Yannis
câu trả lời duy nhất thanh lịch ở đây. - Michael IV


Bạn cũng có thể sử dụng sys.platform nếu bạn đã nhập sys và bạn không muốn nhập mô-đun khác

>>> import sys
>>> sys.platform
'linux2'

36
2017-08-26 15:41



Liệu trên các phương pháp tiếp cận có bất kỳ lợi thế, bên cạnh việc có hoặc không nhập khẩu một mô-đun? - matth
Phạm vi là lợi thế chính. Bạn muốn càng ít tên biến toàn cầu càng tốt. Khi bạn đã có "sys" dưới dạng tên chung, bạn không nên thêm tên khác. Nhưng nếu bạn chưa sử dụng "sys", việc sử dụng "_platform" có thể mang tính mô tả hơn và ít có khả năng va chạm với một ý nghĩa khác. - sanderd17


Nếu bạn muốn dữ liệu người dùng có thể đọc được nhưng vẫn chi tiết, bạn có thể sử dụng platform.platform () 

>>> import platform
>>> platform.platform()
'Linux-3.3.0-8.fc16.x86_64-x86_64-with-fedora-16-Verne'

Dưới đây là một vài cuộc gọi khác nhau mà bạn có thể thực hiện để xác định bạn đang ở đâu

import platform
import sys

def linux_distribution():
  try:
    return platform.linux_distribution()
  except:
    return "N/A"

print("""Python version: %s
dist: %s
linux_distribution: %s
system: %s
machine: %s
platform: %s
uname: %s
version: %s
mac_ver: %s
""" % (
sys.version.split('\n'),
str(platform.dist()),
linux_distribution(),
platform.system(),
platform.machine(),
platform.platform(),
platform.uname(),
platform.version(),
platform.mac_ver(),
))

Các đầu ra của tập lệnh này chạy trên một vài hệ thống khác nhau có sẵn tại đây: https://github.com/hpcugent/easybuild/wiki/OS_flavor_name_version


25
2018-01-23 10:55





tôi làm việc này

import sys
print sys.platform

Tài liệu tại đây: sys.platform.

Mọi thứ bạn cần có lẽ là trong mô-đun sys.


18
2018-02-16 14:43