Λήψη πληροφοριών σχετικά με το λειτουργικό σύστημα και την έκδοση της Python που εκτελείται στο περιβάλλον.

Επιχείρηση

Η μονάδα πλατφόρμας της τυπικής βιβλιοθήκης χρησιμοποιείται για να λάβετε πληροφορίες σχετικά με το λειτουργικό σύστημα στο οποίο εκτελείται η Python και την έκδοσή του (release). Χρησιμοποιώντας αυτή τη μονάδα, είναι δυνατή η εναλλαγή της διαδικασίας για κάθε λειτουργικό σύστημα και έκδοση.

Οι ακόλουθες πληροφορίες παρέχονται εδώ.

  • Λήψη του ονόματος του λειτουργικού συστήματος:platform.system()
  • Λήψη πληροφοριών έκδοσης (release):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

Λήψη πληροφοριών έκδοσης (release): platform.release(), version()

Οι πληροφορίες για την έκδοση (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()

Το όνομα του λειτουργικού συστήματος και οι πληροφορίες έκδοσης (release) μπορούν να ληφθούν μαζί χρησιμοποιώντας την platform.platform(). Η τιμή επιστροφής είναι μια συμβολοσειρά.

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

Εάν η τιμή του ορίσματος terse είναι TRUE, θα επιστραφούν μόνο ελάχιστες πληροφορίες.

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

Υπάρχει επίσης ένα επιχείρημα aliased.

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

Το αποτέλεσμα είναι το ίδιο στο περιβάλλον του παραδείγματος, αλλά ορισμένα λειτουργικά συστήματα θα επιστρέψουν ένα ψευδώνυμο ως όνομα λειτουργικού συστήματος.

Εάν η τιμή aliased είναι true, επιστρέφει το αποτέλεσμα χρησιμοποιώντας ένα ψευδώνυμο αντί για το κοινό όνομα του συστήματος. Για παράδειγμα, το SunOS γίνεται Solaris.
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

Σημειώστε ότι πρόκειται για το Darwin και όχι για το macOS ή το Mojave.
Για περισσότερες πληροφορίες σχετικά με τον Δαρβίνο, ανατρέξτε στη σελίδα της Wikipedia. Υπάρχει επίσης μια περιγραφή της αντιστοιχίας μεταξύ του τελευταίου αριθμού έκδοσης και του ονόματος στο macOS.

Υπάρχει μια ειδική για το madOS συνάρτηση που ονομάζεται platform.mac_ver().
Η τιμή επιστροφής επιστρέφεται ως πλειάδα (release, versioninfo, machine).
Στο περιβάλλον του παραδείγματος, το versioninfo είναι άγνωστο και είναι μια κενή πλειάδα συμβολοσειρών.

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().
Η τιμή επιστροφής επιστρέφεται ως πλειάδα (release, version, csd, ptype).
csd υποδεικνύει την κατάσταση του πακέτου υπηρεσιών.

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

Ubuntu

Παράδειγμα του αποτελέσματος σε 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 συνάρτηση platform.linux_distribution().
Η τιμή επιστροφής επιστρέφεται ως πλειάδα (distname, version, id).

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

Σημειώστε ότι η platform.linux_distribution() έχει καταργηθεί στην Python 3.8. Συνιστάται να χρησιμοποιείτε αντ' αυτού τη διανομή βιβλιοθηκών τρίτων, η οποία πρέπει να εγκατασταθεί ξεχωριστά με τη χρήση του pip.

Κώδικας δείγματος για εναλλαγή επεξεργασίας ανάλογα με το λειτουργικό σύστημα

Αν θέλετε να αλλάξετε τη συνάρτηση ή τη μέθοδο που θα χρησιμοποιηθεί ανάλογα με το λειτουργικό σύστημα, μπορείτε να χρησιμοποιήσετε μια μέθοδο όπως η 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 και των άλλων περιπτώσεων.

Copied title and URL