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

Source code: Lib/platform.py


Ghi chú

Các nền tảng cụ thể được liệt kê theo thứ tự bảng chữ cái, trong đó Linux được bao gồm trong phần Unix.

Đa nền tảng

platform.architecture(executable=sys.executable, bits='', linkage='')

Truy vấn tệp thực thi đã cho (mặc định là nhị phân trình thông dịch Python) để biết các thông tin kiến trúc khác nhau.

Trả về một bộ (bits, linkage) chứa thông tin về kiến trúc bit và định dạng liên kết được sử dụng cho tệp thực thi. Cả hai giá trị đều được trả về dưới dạng chuỗi.

Các giá trị không thể xác định được sẽ được trả về như được đưa ra bởi các tham số đặt trước. Nếu các bit được cung cấp dưới dạng '' thì sizeof(pointer) (hoặc sizeof(long) trên phiên bản Python < 1.5.2) sẽ được sử dụng làm chỉ báo cho kích thước con trỏ được hỗ trợ.

Hàm này dựa vào lệnh file của hệ thống để thực hiện công việc thực tế. Tính năng này khả dụng trên hầu hết nếu không phải tất cả các nền tảng Unix và một số nền tảng không phải Unix và chỉ khi tệp thực thi trỏ tới trình thông dịch Python. Mặc định hợp lý được sử dụng khi các nhu cầu trên không được đáp ứng.

Ghi chú

Trên macOS (và có lẽ cả các nền tảng khác), các tệp thực thi có thể là các tệp phổ quát chứa nhiều kiến trúc.

Để đạt được "64-bitness" của trình thông dịch hiện tại, việc truy vấn thuộc tính sys.maxsize

is_64bits = sys.maxsize > 2**32
platform.machine()

Trả về loại máy, ví dụ: 'AMD64'. Một chuỗi trống được trả về nếu không thể xác định được giá trị.

Đầu ra phụ thuộc vào nền tảng và có thể khác nhau về quy ước đặt tên và cách viết.

platform.node()

Trả về tên mạng của máy tính (có thể không đủ điều kiện!). Một chuỗi trống được trả về nếu không thể xác định được giá trị.

platform.platform(aliased=False, terse=False)

Trả về một chuỗi xác định nền tảng cơ bản với càng nhiều thông tin hữu ích càng tốt.

Đầu ra được dự định là human readable thay vì có thể phân tích được bằng máy. Nó có thể trông khác nhau trên các nền tảng khác nhau và điều này là có chủ đích.

Nếu aliased là đúng, hàm này sẽ sử dụng bí danh cho nhiều nền tảng khác nhau để báo cáo tên hệ thống khác với tên thông thường của chúng, ví dụ: SunOS sẽ được báo cáo là Solaris. Hàm system_alias() được sử dụng để thực hiện việc này.

Đặt terse thành true khiến hàm chỉ trả về thông tin tối thiểu tuyệt đối cần thiết để xác định nền tảng.

Thay đổi trong phiên bản 3.8: Trên macOS, hàm hiện sử dụng mac_ver(), nếu nó trả về chuỗi phát hành không trống, để lấy phiên bản macOS thay vì phiên bản Darwin.

platform.processor()

Trả về tên bộ xử lý (thực), ví dụ: 'amdk6'.

Một chuỗi trống được trả về nếu không thể xác định được giá trị. Lưu ý rằng nhiều nền tảng không cung cấp thông tin này hoặc chỉ trả về giá trị tương tự như đối với machine(). NetBSD thực hiện điều này.

platform.python_build()

Trả về một bộ (buildno, builddate) cho biết ngày và số bản dựng Python dưới dạng chuỗi.

platform.python_compiler()

Trả về một chuỗi xác định trình biên dịch được sử dụng để biên dịch Python.

platform.python_branch()

Trả về một chuỗi xác định nhánh SCM triển khai Python.

platform.python_implementation()

Trả về một chuỗi xác định việc triển khai Python. Các giá trị trả về có thể có là: 'CPython', 'IronPython', 'Jython', 'PyPy'.

platform.python_revision()

Trả về một chuỗi xác định bản sửa đổi SCM triển khai Python.

platform.python_version()

Trả về phiên bản Python dưới dạng chuỗi 'major.minor.patchlevel'.

Lưu ý rằng không giống như Python sys.version, giá trị trả về sẽ luôn bao gồm patchlevel (mặc định là 0).

platform.python_version_tuple()

Trả về phiên bản Python dưới dạng bộ chuỗi (major, minor, patchlevel).

Lưu ý rằng không giống như sys.version của Python, giá trị được trả về sẽ luôn bao gồm patchlevel (mặc định là '0').

platform.release()

Trả về bản phát hành của hệ thống, ví dụ: '2.2.0' hoặc 'NT'. Một chuỗi trống được trả về nếu không thể xác định được giá trị.

platform.system()

Trả về tên hệ thống/HĐH, chẳng hạn như 'Linux', 'Darwin', 'Java', 'Windows'. Một chuỗi trống được trả về nếu không thể xác định được giá trị.

Trên iOS và Android, điều này trả về tên hệ điều hành mà người dùng nhìn thấy (ví dụ: 'iOS, 'iPadOS' hoặc 'Android'). Để lấy tên kernel ('Darwin' hoặc 'Linux'), hãy sử dụng os.uname().

platform.system_alias(system, release, version)

Trả về (system, release, version) bí danh cho các tên tiếp thị phổ biến được sử dụng cho một số hệ thống. Nó cũng thực hiện một số việc sắp xếp lại thông tin trong một số trường hợp có thể gây nhầm lẫn.

platform.version()

Trả về phiên bản phát hành của hệ thống, ví dụ: '#3 on degas'. Một chuỗi trống được trả về nếu không thể xác định được giá trị.

Trên iOS và Android, đây là phiên bản hệ điều hành hướng tới người dùng. Để có phiên bản kernel Darwin hoặc Linux, hãy sử dụng os.uname().

platform.uname()

Giao diện uname khá di động. Trả về một namedtuple() chứa sáu thuộc tính: system, node, release, version, machineprocessor.

processor được giải quyết muộn, theo yêu cầu.

Lưu ý: hai tên thuộc tính đầu tiên khác với tên do os.uname() đưa ra, trong đó chúng được đặt tên là sysnamenodename.

Các mục không thể xác định được đặt thành ''.

Thay đổi trong phiên bản 3.3: Kết quả đã thay đổi từ một bộ dữ liệu thành namedtuple().

Thay đổi trong phiên bản 3.9: processor được giải quyết muộn thay vì ngay lập tức.

platform.invalidate_caches()

Xóa bộ nhớ đệm thông tin bên trong, chẳng hạn như uname(). Điều này thường hữu ích khi node() của nền tảng bị thay đổi bởi một quy trình bên ngoài và người ta cần truy xuất giá trị được cập nhật.

Added in version 3.14.

nền tảng Java

platform.java_ver(release='', vendor='', vminfo=('', '', ''), osinfo=('', '', ''))

Giao diện phiên bản dành cho Jython.

Trả về một bộ (release, vendor, vminfo, osinfo) với vminfo là một bộ (vm_name, vm_release, vm_vendor)osinfo là một bộ (os_name, os_version, os_arch). Các giá trị không thể xác định được đặt thành giá trị mặc định được cung cấp dưới dạng tham số (tất cả đều mặc định là '').

Không được dùng nữa kể từ phiên bản 3.13, sẽ bị xóa trong phiên bản 3.15: Nó phần lớn chưa được kiểm tra, có API khó hiểu và chỉ hữu ích cho việc hỗ trợ Jython.

Nền tảng Windows

platform.win32_ver(release='', version='', csd='', ptype='')

Nhận thông tin phiên bản bổ sung từ Sổ đăng ký Windows và trả về một bộ (release, version, csd, ptype) đề cập đến bản phát hành hệ điều hành, số phiên bản, cấp độ CSD (gói dịch vụ) và loại hệ điều hành (bộ xử lý đa/đơn). Các giá trị không thể xác định được đặt thành giá trị mặc định được cung cấp dưới dạng tham số (tất cả đều mặc định là chuỗi trống).

Như một gợi ý: ptype'Uniprocessor Free' trên các máy NT có bộ xử lý đơn và 'Multiprocessor Free' trên các máy đa bộ xử lý. Zz002zz đề cập đến phiên bản hệ điều hành không có mã gỡ lỗi. Nó cũng có thể nêu 'Checked', có nghĩa là phiên bản hệ điều hành sử dụng mã gỡ lỗi, tức là mã kiểm tra các đối số, phạm vi, v.v.

platform.win32_edition()

Trả về một chuỗi đại diện cho phiên bản Windows hiện tại hoặc None nếu không thể xác định được giá trị. Các giá trị có thể bao gồm nhưng không giới hạn ở 'Enterprise', 'IoTUAP', 'ServerStandard''nanoserver'.

Added in version 3.8.

platform.win32_is_iot()

Trả về True nếu phiên bản Windows do win32_edition() trả về được công nhận là phiên bản IoT.

Added in version 3.8.

nền tảng macOS

platform.mac_ver(release='', versioninfo=('', '', ''), machine='')

Nhận thông tin phiên bản macOS và trả về dưới dạng bộ dữ liệu (release, versioninfo, machine) với versioninfo là bộ dữ liệu (version, dev_stage, non_release_version).

Các mục không thể xác định được đặt thành ''. Tất cả các mục tuple là chuỗi.

nền tảng iOS

platform.ios_ver(system='', release='', model='', is_simulator=False)

Nhận thông tin phiên bản iOS và trả lại dưới dạng namedtuple() với các thuộc tính sau:

  • system là tên hệ điều hành; 'iOS' hoặc 'iPadOS'.

  • release là số phiên bản iOS dưới dạng chuỗi (ví dụ: '17.2').

  • model là mã định danh kiểu thiết bị; đây sẽ là một chuỗi như 'iPhone13,2' cho thiết bị vật lý hoặc 'iPhone' trên trình mô phỏng.

  • is_simulator là một boolean mô tả ứng dụng đang chạy trên trình mô phỏng hay thiết bị vật lý.

Các mục nhập không thể xác định được đặt thành giá trị mặc định được cung cấp dưới dạng tham số.

Nền tảng Unix

platform.libc_ver(executable=sys.executable, lib='', version='', chunksize=16384)

Cố gắng xác định phiên bản libc mà tệp thực thi được liên kết (mặc định là trình thông dịch Python). Trả về một bộ chuỗi (lib, version) mặc định có các tham số đã cho trong trường hợp tra cứu không thành công.

Lưu ý rằng hàm này có kiến thức sâu sắc về cách các phiên bản libc khác nhau thêm ký hiệu vào tệp thực thi có lẽ chỉ có thể sử dụng được đối với các tệp thực thi được biên dịch bằng gcc.

Tệp được đọc và quét theo khối byte chunksize.

Nền tảng Linux

platform.freedesktop_os_release()

Nhận nhận dạng hệ điều hành từ tệp os-release và trả lại dưới dạng lệnh. Tệp os-releasefreedesktop.org standard và có sẵn trong hầu hết các bản phân phối Linux. Một ngoại lệ đáng chú ý là Android và các bản phân phối dựa trên Android.

Tăng OSError hoặc phân lớp khi cả /etc/os-release/usr/lib/os-release đều không thể đọc được.

Khi thành công, hàm trả về một từ điển trong đó khóa và giá trị là chuỗi. Các giá trị có các ký tự đặc biệt như "$ không được trích dẫn. Các trường NAME, IDPRETTY_NAME luôn được xác định theo tiêu chuẩn. Tất cả các trường khác là tùy chọn. Nhà cung cấp có thể bao gồm các trường bổ sung.

Lưu ý rằng các trường như NAME, VERSIONVARIANT là các chuỗi phù hợp để trình bày cho người dùng. Các chương trình nên sử dụng các trường như ID, ID_LIKE, VERSION_ID hoặc VARIANT_ID để xác định các bản phân phối Linux.

Ví dụ:

chắc chắn get_like_distro():
    thông tin = platform.freedesktop_os_release()
    id = [thông tin["ID"]]
    nếu "ID_LIKE" trong thông tin:
        # ids được phân tách bằng dấu cách và được sắp xếp theo thứ tự ưu tiên
        ids.extend(thông tin["ID_LIKE"].split())
    trả về id

Added in version 3.10.

Nền tảng Android

platform.android_ver(release='', api_level=0, manufacturer='', model='', device='', is_emulator=False)

Nhận thông tin thiết bị Android. Trả về namedtuple() với các thuộc tính sau. Các giá trị không thể xác định được sẽ được đặt thành giá trị mặc định được cung cấp dưới dạng tham số.

  • release - Phiên bản Android, dưới dạng chuỗi (ví dụ: "14").

  • api_level - Cấp độ API của thiết bị đang chạy, dưới dạng số nguyên (ví dụ: 34 dành cho Android 14). Để có được cấp độ API mà Python được xây dựng dựa trên, hãy xem sys.getandroidapilevel().

  • manufacturer - Manufacturer name.

  • model - Model name – thường là tên tiếp thị hoặc số kiểu máy.

  • device - Device name – thường là số model hoặc tên mã.

  • is_emulator - True nếu thiết bị là trình giả lập; False nếu đó là thiết bị vật lý.

Google duy trì list of known model and device names.

Added in version 3.13.

Sử dụng dòng lệnh

platform cũng có thể được gọi trực tiếp bằng cách sử dụng khóa chuyển -m của trình thông dịch:

python -m platform [--terse] [--nonaliased] [{nonaliased,terse} ...]

Các tùy chọn sau được chấp nhận:

--terse

In thông tin ngắn gọn về nền tảng. Điều này tương đương với việc gọi platform.platform() với đối số terse được đặt thành True.

--nonaliased

In thông tin nền tảng mà không cần đặt bí danh tên hệ thống/hệ điều hành. Điều này tương đương với việc gọi platform.platform() với đối số aliased được đặt thành True.

Bạn cũng có thể chuyển một hoặc nhiều đối số vị trí (terse, nonaliased) để kiểm soát rõ ràng định dạng đầu ra. Chúng hoạt động tương tự như các tùy chọn tương ứng của chúng.