Dapatkan maklumat mengenai OS dan versi Python yang berjalan di persekitaran.

Perniagaan

Modul platform perpustakaan standard digunakan untuk mendapatkan maklumat mengenai sistem operasi di mana Python dijalankan dan versi (pelepasan). Dengan menggunakan modul ini, adalah mungkin untuk menukar proses untuk setiap OS dan versi.

Maklumat berikut diberikan di sini.

  • Dapatkan nama OS:platform.system()
  • Dapatkan maklumat versi (pelepasan):platform.release(),version()
  • Dapatkan OS dan versi sekaligus:platform.platform()
  • Contoh keputusan untuk setiap OS
    • macOS
    • Windows
    • Ubuntu
  • Contoh kod untuk menukar pemprosesan bergantung pada OS

Sekiranya anda ingin mengetahui versi Python yang anda jalankan, lihat artikel berikut.

Semua contoh kod pada separuh masa pertama dijalankan pada macOS Mojave 10.14.2; contoh keputusan pada Windows dan Ubuntu ditunjukkan pada babak kedua; Fungsi khusus OS juga dibincangkan pada babak kedua.

Dapatkan nama OS: platform.system ()

Nama OS diperoleh oleh platform.system (). Nilai pulangan adalah rentetan.

import platform

print(platform.system())
# Darwin

Dapatkan maklumat versi (pelepasan): platform.release (), versi ()

Maklumat versi OS (pelepasan) diperoleh dengan fungsi berikut. Dalam kedua kes tersebut, nilai kembali adalah rentetan.

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

Seperti yang ditunjukkan dalam contoh berikut, platform.release () mengembalikan kandungan yang lebih sederhana.

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

Dapatkan OS dan versi sekaligus: platform.platform ()

Maklumat nama dan versi OS (pelepasan) dapat diperoleh bersama menggunakan platform.platform (). Nilai pulangan adalah rentetan.

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

Sekiranya nilai argumen tersurat adalah BENAR, hanya sedikit maklumat yang akan dikembalikan.

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

Terdapat juga hujah yang disingkirkan.

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

Hasilnya sama dalam persekitaran contoh, tetapi beberapa sistem operasi akan mengembalikan alias sebagai nama OS.

Sekiranya nama samaran itu benar, ia akan mengembalikan hasilnya dengan menggunakan alias dan bukannya nama umum sistem. Contohnya, SunOS menjadi Solaris.
platform.platform() — Access to underlying platform’s identifying data — Python 3.10.0 Documentation

Contoh keputusan untuk setiap OS

Contoh hasil pada macOS, Windows, dan Ubuntu akan ditunjukkan, serta fungsi khusus OS.

macOS

Contoh keputusan pada macOS Mojave 10.14.2. Sama seperti contoh yang ditunjukkan di atas.

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

Perhatikan bahawa itu adalah Darwin, bukan macOS atau Mojave.
Untuk maklumat lebih lanjut mengenai Darwin, lihat halaman Wikipedia. Terdapat juga keterangan mengenai korespondensi antara nombor versi terbaru dan nama di macOS.

Terdapat fungsi khusus madOS yang disebut platform.mac_ver ().
Nilai kembali dikembalikan sebagai tuple (pelepasan, versioninfo, mesin).
Dalam persekitaran contoh, versioninfo tidak diketahui dan merupakan tuple string kosong.

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

Tingkap

Contoh keputusan di 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

Perhatikan bahawa nilai kembali 10 dari platform.release () adalah rentetan, bukan bilangan bulat.

Terdapat fungsi khusus Windows yang disebut platform.win32_ver ().
Nilai kembali dikembalikan sebagai tuple (pelepasan, versi, csd, ptype).
csd menunjukkan status pek perkhidmatan.

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

Ubuntu

Contoh keputusan pada 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

Terdapat platform fungsi khusus Unix.linux_distribution ().
Nilai kembali dikembalikan sebagai tuple (nama panggilan, versi, id).

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

Perhatikan bahawa platform.linux_distribution () telah dikeluarkan di Python 3.8. Sebaiknya gunakan distro perpustakaan pihak ketiga, yang perlu dipasang secara berasingan menggunakan pip.

Contoh kod untuk menukar pemprosesan bergantung pada OS

Sekiranya anda ingin menukar fungsi atau kaedah yang akan digunakan bergantung pada OS, anda boleh menggunakan kaedah seperti platform.system () untuk menentukan nilainya.

Berikut adalah contoh memperoleh tarikh penciptaan fail.

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

Dalam contoh ini, nilai platform.system () pertama kali digunakan untuk menentukan sama ada Windows atau yang lain.
Kemudian, ia menggunakan pengendalian pengecualian untuk menukar proses antara kes di mana atribut st_birthtime wujud dan kes lain.

Copied title and URL