Fondamentalement, j'ai quelques ordinateurs Windows sur mon réseau qui exécuteront un script python. Un ensemble différent d'options de configuration doit être utilisé dans le script en fonction de l'ordinateur qui exécute ce script.
Comment puis-je obtenir ce nom d'ordinateur dans le script python?
Disons que le script s'exécutait sur un ordinateur nommé DARK-TOWER, je voudrais écrire quelque chose comme ceci:
>>> python.library.get_computer_name()
'DARK-TOWER'
Existe-t-il une bibliothèque standard ou tierce que je peux utiliser?
Il s'avère qu'il existe trois options (y compris les deux déjà répondues précédemment):
>>> import platform
>>> import socket
>>> import os
>>> platform.node()
'DARK-TOWER'
>>> socket.gethostname()
'DARK-TOWER'
>>> os.environ['COMPUTERNAME']
'DARK-TOWER'
import socket
socket.gethostname()
De https://mail.python.org/pipermail/python-list/2006-April/397494.html
import os
os.getenv('COMPUTERNAME')
Comme l'a dit Eric Palakovich Carr, vous pouvez utiliser ces trois variantes.
Je préfère les utiliser ensemble:
def getpcname():
n1 = platform.node()
n2 = socket.gethostname()
n3 = os.environ["COMPUTERNAME"]
if n1 == n2 == n3:
return n1
Elif n1 == n2:
return n1
Elif n1 == n3:
return n1
Elif n2 == n3:
return n2
else:
raise Exception("Computernames are not equal to each other")
Je le préfère lors du développement d'applications cross-patform pour être sûr;)
Étant donné que les scripts python sont certainement exécutés sur un système Windows, vous devez utiliser l'API Win32 GetComputerName ou GetComputerNameEx
Vous pouvez obtenir le nom DNS complet, le nom NETBIOS ou une variété de choses différentes.
import win32api
win32api.GetComputerName()
>>'MYNAME'
Ou:
import win32api
WIN32_ComputerNameDnsHostname = 1
win32api.GetComputerNameEx(WIN32_ComputerNameDnsHostname)
>> u'MYNAME'
Je parie que gethostname fonctionnera à merveille.