Ottiene informazioni sul sistema operativo e sulla versione di Python in esecuzione nell’ambiente.

Attività commerciale

Il modulo platform della libreria standard è usato per ottenere informazioni sul sistema operativo su cui Python sta girando e sulla sua versione (release). Usando questo modulo, è possibile cambiare il processo per ogni sistema operativo e versione.

Le seguenti informazioni sono fornite qui.

  • Ottenere il nome del sistema operativo:platform.system()
  • Ottieni informazioni sulla versione (release):platform.release(),version()
  • Ottieni subito il sistema operativo e la versione:platform.platform()
  • Esempi di risultati per ogni sistema operativo
    • macOS
    • Windows
    • Ubuntu
  • Codice di esempio per cambiare l'elaborazione a seconda del sistema operativo

Se vuoi sapere la versione di Python che stai usando, vedi il seguente articolo.

Tutto il codice di esempio nella prima metà è eseguito su macOS Mojave 10.14.2; i risultati di esempio su Windows e Ubuntu sono mostrati nella seconda metà; le funzioni specifiche del sistema operativo sono anche discusse nella seconda metà.

Ottenere il nome del sistema operativo: platform.system()

Il nome del sistema operativo è ottenuto da platform.system(). Il valore di ritorno è una stringa.

import platform

print(platform.system())
# Darwin

Ottenere informazioni sulla versione (release): platform.release(), version()

Le informazioni sulla versione del sistema operativo (release) si ottengono con le seguenti funzioni. In entrambi i casi, il valore di ritorno è una stringa.

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

Come mostrato nell'esempio seguente, platform.release() restituisce contenuti più semplici.

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

Ottenere il sistema operativo e la versione in una volta sola: platform.platform()

Il nome del sistema operativo e le informazioni sulla versione (release) possono essere ottenuti insieme usando platform.platform(). Il valore di ritorno è una stringa.

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

Se il valore dell'argomento terse è TRUE, verranno restituite solo informazioni minime.

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

C'è anche un argomento alias.

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

Il risultato è lo stesso nell'ambiente di esempio, ma alcuni sistemi operativi restituiranno un alias come nome del sistema operativo.

Se aliased è vero, restituisce il risultato usando un alias invece del nome comune del sistema. Per esempio, SunOS diventa Solaris.
platform.platform() — Access to underlying platform’s identifying data — Python 3.10.0 Documentation

Esempi di risultati per ogni sistema operativo

Verranno mostrati esempi di risultati su macOS, Windows e Ubuntu, così come funzioni specifiche del sistema operativo.

macOS

Esempio del risultato su macOS Mojave 10.14.2. Lo stesso dell'esempio mostrato sopra.

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

Si noti che è Darwin, non macOS o Mojave.
Per ulteriori informazioni su Darwin, vedere la pagina di Wikipedia. C'è anche una descrizione della corrispondenza tra l'ultimo numero di versione e il nome in macOS.

C'è una funzione specifica per madOS chiamata platform.mac_ver().
Il valore di ritorno viene restituito come una tupla (release, versioninfo, machine).
Nell'ambiente di esempio, versioninfo è sconosciuto ed è una tupla di stringhe vuota.

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

Windows

Esempio di risultati su 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

Notate che il valore di ritorno 10 di platform.release() è una stringa, non un intero.

C'è una funzione specifica per Windows chiamata platform.win32_ver().
Il valore di ritorno viene restituito come tupla (release, version, csd, ptype).
csd indica lo stato del service pack.

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

Ubuntu

Esempio del risultato su 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

C'è una funzione specifica per Unix, platform.linux_distribution().
Il valore di ritorno viene restituito come una tupla (distname, version, id).

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

Notate che platform.linux_distribution() è stato rimosso in Python 3.8. Si raccomanda invece di usare la distro delle librerie di terze parti, che deve essere installata separatamente usando pip.

Codice di esempio per cambiare l'elaborazione a seconda del sistema operativo

Se volete cambiare la funzione o il metodo da usare a seconda del sistema operativo, potete usare un metodo come platform.system() per determinare il valore.

Quello che segue è un esempio per ottenere la data di creazione di un file.

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

In questo esempio, il valore di platform.system() è usato prima per determinare se è Windows o altro.
Poi, utilizza la gestione delle eccezioni per passare il processo tra il caso in cui l'attributo st_birthtime esiste e gli altri casi.