Получение имени компьютера windows под управлением скрипта python?
в принципе, у меня есть несколько компьютеров Windows в моей сети, которые будут работать под управлением скрипта python. В зависимости от того, на каком компьютере выполняется этот сценарий, в сценарии должен использоваться другой набор параметров конфигурации.
Как я могу получить это имя компьютера в скрипте python?
допустим, скрипт был запущен на компьютере с именем DARK-TOWER, я бы хотел написать что-то вроде этого:
>>> python.library.get_computer_name()
'DARK-TOWER'
есть ли стандартная или сторонняя библиотека Я могу использовать?
6 ответов:
оказывается, есть три варианта (в том числе два уже ответили ранее):
>>> import platform >>> import socket >>> import os >>> platform.node() 'DARK-TOWER' >>> socket.gethostname() 'DARK-TOWER' >>> os.environ['COMPUTERNAME'] 'DARK-TOWER'
от https://mail.python.org/pipermail/python-list/2006-April/397494.html
import os os.getenv('COMPUTERNAME')
Как сказал Эрик Карр, вы можете использовать эти три варианта.
Я предпочитаю использовать их вместе:
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")
Я предпочитаю это при разработке кросс-приложений patform, чтобы быть уверенным;)
поскольку скрипты python наверняка работают в системе windows, вы должны использовать Win32 API GetComputerName или GetComputerNameEx
Вы можете получить полное DNS-имя, или NETBIOS-имя, или множество разных вещей.
import win32api win32api.GetComputerName() >>'MYNAME'
или:
import win32api WIN32_ComputerNameDnsHostname = 1 win32api.GetComputerNameEx(WIN32_ComputerNameDnsHostname) >> u'MYNAME'
ставлю gethostname будет прекрасно работать.