รับข้อมูลเกี่ยวกับระบบปฏิบัติการและเวอร์ชันของ Python ที่ทำงานอยู่ในสภาพแวดล้อม

ธุรกิจ

โมดูลแพลตฟอร์มไลบรารีมาตรฐานใช้เพื่อรับข้อมูลเกี่ยวกับระบบปฏิบัติการที่ Python ใช้งานอยู่และเวอร์ชัน (รีลีส) การใช้โมดูลนี้ทำให้สามารถเปลี่ยนกระบวนการสำหรับแต่ละระบบปฏิบัติการและเวอร์ชันได้

ข้อมูลต่อไปนี้มีให้ที่นี่

  • รับชื่อระบบปฏิบัติการ:platform.system()
  • รับข้อมูลเวอร์ชัน (เผยแพร่):platform.release(),version()
  • รับระบบปฏิบัติการและเวอร์ชันพร้อมกัน:platform.platform()
  • ตัวอย่างผลลัพธ์สำหรับแต่ละ OS
    • macOS
    • Windows
    • Ubuntu
  • โค้ดตัวอย่างเพื่อสลับการประมวลผลขึ้นอยู่กับ OS

หากคุณต้องการทราบเวอร์ชันของ Python ที่คุณใช้งานอยู่ ให้ดูบทความต่อไปนี้

โค้ดตัวอย่างทั้งหมดในครึ่งแรกทำงานบน macOS Mojave 10.14.2; ตัวอย่างผลลัพธ์ใน Windows และ Ubuntu จะแสดงในครึ่งหลัง ฟังก์ชันเฉพาะของระบบปฏิบัติการยังกล่าวถึงในช่วงครึ่งหลัง

รับชื่อระบบปฏิบัติการ: platform.system()

ชื่อ OS ได้มาจาก platform.system() ค่าที่ส่งกลับเป็นสตริง

import platform

print(platform.system())
# Darwin

รับข้อมูลเวอร์ชัน (เผยแพร่): platform.release(), version()

ข้อมูลเวอร์ชันของระบบปฏิบัติการ (รุ่น) จะได้รับพร้อมกับฟังก์ชันต่อไปนี้ ในทั้งสองกรณี ค่าส่งกลับเป็นสตริง

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

ดังแสดงในตัวอย่างต่อไปนี้ platform.release() ส่งคืนเนื้อหาที่ง่ายกว่า

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

รับระบบปฏิบัติการและเวอร์ชันพร้อมกัน: platform.platform()

สามารถรับข้อมูลชื่อ OS และเวอร์ชัน (รุ่น) ร่วมกันได้โดยใช้ platform.platform() ค่าที่ส่งกลับเป็นสตริง

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

หากค่าของอาร์กิวเมนต์สั้น ๆ เป็น TRUE ระบบจะส่งคืนเฉพาะข้อมูลขั้นต่ำเท่านั้น

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

นอกจากนี้ยังมีนามแฝงอาร์กิวเมนต์

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

ผลลัพธ์จะเหมือนกันในสภาพแวดล้อมตัวอย่าง แต่ระบบปฏิบัติการบางระบบจะส่งคืนนามแฝงเป็นชื่อระบบปฏิบัติการ

ถ้านามแฝงเป็นจริง จะส่งคืนผลลัพธ์โดยใช้นามแฝงแทนชื่อทั่วไปของระบบ ตัวอย่างเช่น SunOS กลายเป็น Solaris
platform.platform() — Access to underlying platform’s identifying data — Python 3.10.0 Documentation

ตัวอย่างผลลัพธ์สำหรับแต่ละ OS

ตัวอย่างผลลัพธ์ใน macOS, Windows และ Ubuntu จะแสดงขึ้น รวมถึงฟังก์ชันเฉพาะของระบบปฏิบัติการ

macOS

ตัวอย่างผลลัพธ์ใน macOS Mojave 10.14.2 เช่นเดียวกับตัวอย่างที่แสดงด้านบน

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

โปรดทราบว่านี่คือดาร์วิน ไม่ใช่ macOS หรือ Mojave
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับดาร์วิน โปรดดูที่หน้า Wikipedia นอกจากนี้ยังมีคำอธิบายของการติดต่อระหว่างหมายเลขเวอร์ชันล่าสุดและชื่อใน macOS

มีฟังก์ชันเฉพาะของ madOS ที่เรียกว่า platform.mac_ver()
ค่าส่งคืนจะถูกส่งกลับเป็นทูเพิล (release, versioninfo, machine)
ในสภาพแวดล้อมตัวอย่าง ไม่ทราบ versioninfo และเป็น tuple สตริงว่าง

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

Windows

ตัวอย่างผลลัพธ์ใน 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

โปรดทราบว่าผลตอบแทน 10 ของ platform.release() เป็นสตริง ไม่ใช่จำนวนเต็ม

มีฟังก์ชันเฉพาะของ Windows ที่เรียกว่า platform.win32_ver()
ค่าส่งคืนจะถูกส่งกลับเป็นทูเพิล (รีลีส, เวอร์ชัน, csd, ptype)
csd ระบุสถานะของเซอร์วิสแพ็ค

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

อูบุนตู

ตัวอย่างผลลัพธ์บน 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

มี platform.linux_distribution() ฟังก์ชันเฉพาะของ Unix
ค่าส่งคืนจะถูกส่งกลับเป็นทูเพิล (distname, version, id)

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

โปรดทราบว่า platform.linux_distribution() ถูกลบใน Python 3.8 ขอแนะนำให้ใช้ distro ไลบรารีบุคคลที่สามแทน ซึ่งจำเป็นต้องติดตั้งแยกต่างหากโดยใช้ pip

โค้ดตัวอย่างเพื่อสลับการประมวลผลขึ้นอยู่กับ OS

หากคุณต้องการสลับฟังก์ชันหรือวิธีการที่จะใช้ขึ้นอยู่กับระบบปฏิบัติการ คุณสามารถใช้วิธีการเช่น platform.system() เพื่อกำหนดค่า

ต่อไปนี้คือตัวอย่างการรับวันที่สร้างไฟล์

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

ในตัวอย่างนี้ ค่าของ platform.system() ถูกใช้ครั้งแรกเพื่อระบุว่าเป็น Windows หรืออื่นๆ
จากนั้น ใช้การจัดการข้อยกเว้นเพิ่มเติมเพื่อสลับกระบวนการระหว่างกรณีที่แอตทริบิวต์ st_birthtime มีอยู่กับกรณีอื่นๆ