Η μονάδα πλατφόρμας της τυπικής βιβλιοθήκης χρησιμοποιείται για να λάβετε πληροφορίες σχετικά με το λειτουργικό σύστημα στο οποίο εκτελείται η Python και την έκδοσή του (release). Χρησιμοποιώντας αυτή τη μονάδα, είναι δυνατή η εναλλαγή της διαδικασίας για κάθε λειτουργικό σύστημα και έκδοση.
Οι ακόλουθες πληροφορίες παρέχονται εδώ.
- Λήψη του ονόματος του λειτουργικού συστήματος:
platform.system()
- Λήψη πληροφοριών έκδοσης (release):
platform.release()
,version()
- Πάρτε το λειτουργικό σύστημα και την έκδοση αμέσως:
platform.platform()
- Παραδείγματα αποτελεσμάτων για κάθε λειτουργικό σύστημα
- macOS
- Windows
- Ubuntu
- Κώδικας δείγματος για εναλλαγή επεξεργασίας ανάλογα με το λειτουργικό σύστημα
Αν θέλετε να μάθετε την έκδοση της Python που τρέχετε, ανατρέξτε στο ακόλουθο άρθρο.
Όλος ο δειγματικός κώδικας στο πρώτο μέρος εκτελείται σε macOS Mojave 10.14.2. Στο δεύτερο μέρος παρουσιάζονται παραδείγματα αποτελεσμάτων σε Windows και Ubuntu.
- Λήψη του ονόματος του λειτουργικού συστήματος: platform.system()
- Λήψη πληροφοριών έκδοσης (release): platform.release(), version()
- Λήψη λειτουργικού συστήματος και έκδοσης ταυτόχρονα: platform.platform()
- Παραδείγματα αποτελεσμάτων για κάθε λειτουργικό σύστημα
- Κώδικας δείγματος για εναλλαγή επεξεργασίας ανάλογα με το λειτουργικό σύστημα
Λήψη του ονόματος του λειτουργικού συστήματος: 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 και των άλλων περιπτώσεων.