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.
- Articoli correlati:Controlla e visualizza la versione di Python (ad esempio sys.version)
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()
- Ottenere informazioni sulla versione (release): platform.release(), version()
- Ottenere il sistema operativo e la versione in una volta sola: platform.platform()
- Esempi di risultati per ogni sistema operativo
- Codice di esempio per cambiare l'elaborazione a seconda del sistema operativo
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.