Skip to content

Ottenere il sistema operativo e la sua versione in cui Python è in esecuzione

Python

È possibile ottenere il sistema operativo e la sua versione di rilascio dell’ambiente in cui Python è in esecuzione con la piattaforma della libreria standard.

Per piattaforma, è possibile cambiare l’operazione in base al sistema operativo e alla versione.

Questo articolo descrive i seguenti contenuti:

  • Ottieni il nome del sistema/sistema operativo:platform.system()
  • Ottieni la versione di rilascio del sistema:platform.release(), version()
  • Ottieni insieme il sistema operativo, la versione, ecc.:platform.platform()
  • Esempi per ogni sistema operativo
  • Codice di esempio che cambia operazione a seconda del sistema operativo

Vedere il seguente articolo per come ottenere la versione di Python.

Tutto il codice di esempio nella prima metà è stato eseguito su macOS Mojave 10.14.2. Esempi di risultati su Windows e Ubuntu sono mostrati più avanti. In seguito verranno aggiunte anche le funzioni specifiche del sistema operativo.

Ottieni il nome del sistema/sistema operativo:platform.system()

platform.system() restituisce il nome del sistema/sistema operativo come stringa.

import platform

print(platform.system())
# Darwin

Ottieni la versione di rilascio del sistema:platform.release(), version()

platform.release() e platform.version() restituiscono la versione di rilascio del sistema come stringa.

Come mostrato nell’esempio seguente, platform.release() contiene 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

Ottieni insieme il sistema operativo, la versione, ecc.:platform.platform()

platform.platform() contiene una stringa contenente il nome del sistema operativo, le informazioni sulla versione, ecc.

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

Se terse è vero, vengono 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’esempio precedente, ma a seconda del sistema operativo, l’alias viene restituito come nome del sistema operativo.

Se l’alias è vero, la funzione utilizzerà gli alias per varie piattaforme che segnalano nomi di sistema diversi dai nomi comuni, ad esempio SunOS verrà segnalato come Solaris.
platform.platform() — Accesso ai dati identificativi della piattaforma sottostante — Documentazione Python 3.9.1

Esempi per ogni sistema operativo

Di seguito sono seguiti esempi di risultati eseguiti su macOS, Windows e Ubuntu, insieme a funzioni specifiche del sistema operativo.

Mac OS

Per macOS Mojave 10.14.2:

Uguale all’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

Nota che il nome del sistema operativo è Darwin, non macOS o Mojave. Consulta Wikipedia per il numero di versione corrispondente al nome in macOS.

platform.mac_ver() è una funzione specifica di macOS che rilascia tupla (release, versioninfo, machine).

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

finestre

Per 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

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

platform.win32_ver() è una funzione specifica di Windows che rilascia tupla (release, versione, csd, ptype).

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

platform.win32_edition(), che restituisce l’edizione Windows come stringa, e platform.win32_is_iot(), che restituisce True per l’edizione IoT, sono stati aggiunti in Python 3.8.

Ubuntu

Per 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() è una funzione specifica di Unix che richiede tuple (distname, version, id).

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

Nota che questa funzione è stata rimossa in Python 3.8. Si consiglia invece di utilizzare la distribuzione della libreria di terze parti.

Codice di esempio che cambia operazione a seconda del sistema operativo

Ad esempio, utilizzando platform.system(), l’operazione può essere cambiata a seconda del sistema operativo.

Esempio per ottenere la data e l’ora 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 platform.system() viene utilizzato per se si tratta di Windows meno, quindi viene utilizzato la gestione delle eccezioni per cambiare l’operazione a seconda che esiste o meno l’attributo st_birthtime.

Vedere l’articolo seguente per la gestione delle eccezioni.