Nhận thông tin về hệ điều hành và phiên bản Python đang chạy trong môi trường.

Kinh doanh

Mô-đun nền tảng thư viện tiêu chuẩn được sử dụng để lấy thông tin về hệ điều hành mà Python đang chạy và phiên bản (bản phát hành) của nó. Sử dụng mô-đun này, có thể chuyển đổi quy trình cho từng hệ điều hành và phiên bản.

Thông tin sau được cung cấp ở đây.

  • Lấy tên hệ điều hành:platform.system()
  • Nhận thông tin về phiên bản (phát hành):platform.release(),version()
  • Nhận hệ điều hành và phiên bản cùng một lúc:platform.platform()
  • Ví dụ về kết quả cho từng hệ điều hành
    • macOS
    • Windows
    • Ubuntu
  • Mã mẫu để chuyển đổi xử lý tùy thuộc vào hệ điều hành

Nếu bạn muốn biết phiên bản Python bạn đang chạy, hãy xem bài viết sau.

Tất cả mã mẫu trong nửa đầu đều chạy trên macOS Mojave 10.14.2; kết quả ví dụ trên Windows và Ubuntu được hiển thị trong nửa sau; Các chức năng dành riêng cho hệ điều hành cũng được thảo luận trong nửa sau.

Lấy tên hệ điều hành: platform.system ()

Tên hệ điều hành được lấy bởi platform.system (). Giá trị trả về là một chuỗi.

import platform

print(platform.system())
# Darwin

Nhận thông tin về phiên bản (phát hành): platform.release (), version ()

Thông tin về phiên bản hệ điều hành (phát hành) có được với các chức năng sau. Trong cả hai trường hợp, giá trị trả về là một chuỗi.

  • platform.release()
  • platform.version()

Như được hiển thị trong ví dụ sau, platform.release () trả về nội dung đơn giản hơn.

print(platform.release())
# 18.2.0

print(platform.version())
# Darwin Kernel Version 18.2.0: Mon Nov 12 20:24:46 PST 2018; root:xnu-4903.231.4~2/RELEASE_X86_64

Tải xuống hệ điều hành và phiên bản cùng một lúc: platform.platform ()

Tên hệ điều hành và thông tin phiên bản (phát hành) có thể được lấy cùng nhau bằng cách sử dụng platform.platform (). Giá trị trả về là một chuỗi.

print(platform.platform())
# Darwin-18.2.0-x86_64-i386-64bit

Nếu giá trị của đối số là TRUE, chỉ thông tin tối thiểu sẽ được trả về.

print(platform.platform(terse=True))
# Darwin-18.2.0

Ngoài ra còn có một bí danh đối số.

print(platform.platform(aliased=True))
# Darwin-18.2.0-x86_64-i386-64bit

Kết quả là giống nhau trong môi trường ví dụ, nhưng một số hệ điều hành sẽ trả về bí danh là tên hệ điều hành.

Nếu bí danh là true, nó trả về kết quả bằng cách sử dụng bí danh thay vì tên chung của hệ thống. Ví dụ, SunOS trở thành Solaris.
platform.platform() — Access to underlying platform’s identifying data — Python 3.10.0 Documentation

Ví dụ về kết quả cho từng hệ điều hành

Ví dụ về kết quả trên macOS, Windows và Ubuntu sẽ được hiển thị, cũng như các chức năng dành riêng cho hệ điều hành.

hệ điều hành Mac

Ví dụ về kết quả trên macOS Mojave 10.14.2. Tương tự như ví dụ được hiển thị ở trên.

print(platform.system())
# Darwin

print(platform.release())
# 18.2.0

print(platform.version())
# Darwin Kernel Version 18.2.0: Mon Nov 12 20:24:46 PST 2018; root:xnu-4903.231.4~2/RELEASE_X86_64

print(platform.platform())
# Darwin-18.2.0-x86_64-i386-64bit

Lưu ý rằng đó là Darwin, không phải macOS hay Mojave.
Để biết thêm thông tin về Darwin, hãy xem trang Wikipedia. Ngoài ra còn có mô tả về sự tương ứng giữa số phiên bản mới nhất và tên trong macOS.

Có một chức năng dành riêng cho madOS được gọi là platform.mac_ver ().
Giá trị trả về được trả về dưới dạng tuple (bản phát hành, versioninfo, máy).
Trong môi trường ví dụ, versioninfo là không xác định và là một bộ chuỗi rỗng.

print(platform.mac_ver())
# ('10.14.2', ('', '', ''), 'x86_64')

các cửa sổ

Ví dụ về kết quả trên Windows 10 Home.

print(platform.system())
# Windows

print(platform.release())
# 10

print(platform.version())
# 10.0.17763

print(platform.platform())
# Windows-10-10.0.17763-SP0

Lưu ý rằng giá trị trả về 10 của platform.release () là một chuỗi, không phải là số nguyên.

Có một chức năng dành riêng cho Windows được gọi là platform.win32_ver ().
Giá trị trả về được trả về dưới dạng một bộ (bản phát hành, phiên bản, csd, ptype).
csd cho biết trạng thái của gói dịch vụ.

print(platform.win32_ver())
# ('10', '10.0.17763', 'SP0', 'Multiprocessor Free')

Ubuntu

Ví dụ về kết quả trên Ubuntu 18.04.1 LTS.

print(platform.system())
# Linux

print(platform.release())
# 4.15.0-42-generic

print(platform.version())
# #45-Ubuntu SMP Thu Nov 15 19:32:57 UTC 2018

print(platform.platform())
# Linux-4.15.0-44-generic-x86_64-with-Ubuntu-18.04-bionic

Có một nền tảng chức năng dành riêng cho Unix.linux_distribution ().
Giá trị trả về được trả về dưới dạng tuple (tên miền, phiên bản, id).

print(platform.linux_distribution())
# ('Ubuntu', '18.04', 'bionic')

Lưu ý rằng platform.linux_distribution () đã bị xóa trong Python 3.8. Bạn nên sử dụng bản phân phối thư viện của bên thứ ba để thay thế, bản phân phối này cần được cài đặt riêng bằng cách sử dụng pip.

Mã mẫu để chuyển đổi xử lý tùy thuộc vào hệ điều hành

Nếu bạn muốn chuyển đổi chức năng hoặc phương thức được sử dụng tùy thuộc vào hệ điều hành, bạn có thể sử dụng một phương thức như platform.system () để xác định giá trị.

Sau đây là một ví dụ về lấy ngày tạo tệp.

def creation_date(path_to_file):
    """
    Try to get the date that a file was created, falling back to when it was
    last modified if that isn't possible.
    See http://stackoverflow.com/a/39501288/1709587 for explanation.
    """
    if platform.system() == 'Windows':
        return os.path.getctime(path_to_file)
    else:
        stat = os.stat(path_to_file)
        try:
            return stat.st_birthtime
        except AttributeError:
            # We're probably on Linux. No easy way to get creation dates here,
            # so we'll settle for when its content was last modified.
            return stat.st_mtime

Trong ví dụ này, giá trị của platform.system () lần đầu tiên được sử dụng để xác định xem nó là Windows hay khác.
Sau đó, nó tiếp tục sử dụng xử lý ngoại lệ để chuyển đổi quá trình giữa trường hợp tồn tại thuộc tính st_birthtime và các trường hợp khác.