احصل على معلومات حول نظام التشغيل وإصدار Python الذي يعمل في البيئة.

اعمال

تُستخدم وحدة النظام الأساسي للمكتبة القياسية للحصول على معلومات حول نظام التشغيل الذي يعمل عليه Python وإصداره (الإصدار). باستخدام هذه الوحدة ، من الممكن تبديل العملية لكل نظام تشغيل وإصدار.

يتم توفير المعلومات التالية هنا.

  • احصل على اسم نظام التشغيل:platform.system()
  • الحصول على معلومات الإصدار (الإصدار):platform.release()وversion()
  • احصل على نظام التشغيل والإصدار مرة واحدة:platform.platform()
  • أمثلة على نتائج كل نظام تشغيل
    • macOS
    • Windows
    • Ubuntu
  • عينة رمز لتبديل المعالجة حسب نظام التشغيل

إذا كنت تريد معرفة إصدار Python الذي تقوم بتشغيله ، فراجع المقالة التالية.

يتم تشغيل جميع نماذج التعليمات البرمجية في النصف الأول على macOS Mojave 10.14.2 ؛ تظهر نتائج الأمثلة على Windows و Ubuntu في النصف الثاني ؛ كما تمت مناقشة الوظائف الخاصة بنظام التشغيل في النصف الثاني.

احصل على اسم نظام التشغيل: platform.system ()

يتم الحصول على اسم نظام التشغيل من خلال platform.system (). القيمة المعادة هي سلسلة.

import platform

print(platform.system())
# Darwin

الحصول على معلومات الإصدار (الإصدار): platform.release () ، الإصدار ()

يتم الحصول على معلومات إصدار نظام التشغيل (الإصدار) من خلال الوظائف التالية. في كلتا الحالتين ، القيمة المعادة هي سلسلة.

  • 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 ()

يمكن الحصول على معلومات اسم وإصدار نظام التشغيل (الإصدار) معًا باستخدام 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 سولاريس.
platform.platform() — Access to underlying platform’s identifying data — Python 3.10.0 Documentation

أمثلة على نتائج كل نظام تشغيل

سيتم عرض أمثلة على النتائج على 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.
لمزيد من المعلومات حول داروين ، راجع صفحة ويكيبيديا. يوجد أيضًا وصف للمراسلات بين رقم الإصدار الأخير والاسم في macOS.

هناك وظيفة خاصة بـ madOS تسمى platform.mac_ver ().
يتم إرجاع القيمة المعادة على هيئة مجموعة (الإصدار ، معلومات الإصدار ، الجهاز).
في بيئة المثال ، فإن versioninfo غير معروفة وهي مجموعة سلسلة فارغة.

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

شبابيك

مثال على النتائج على 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

توجد منصة وظائف خاصة بـ Unix.linux_distribution ().
يتم إرجاع القيمة المعادة كمجموعة (distname ، الإصدار ، المعرف).

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

لاحظ أنه تمت إزالة platform.linux_distribution () في Python 3.8. يوصى باستخدام توزيعة مكتبة الطرف الثالث بدلاً من ذلك ، والتي يجب تثبيتها بشكل منفصل باستخدام النقطة.

عينة رمز لتبديل المعالجة حسب نظام التشغيل

إذا كنت تريد تبديل الوظيفة أو الطريقة التي سيتم استخدامها وفقًا لنظام التشغيل ، فيمكنك استخدام طريقة مثل 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 والحالات الأخرى.