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.
- Artikel berkaitan:Periksa dan paparkan versi Python (mis. Sys.version)
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.