Ответ 1
Оказалось, что есть три варианта (в том числе два уже ответили ранее):
>>> import platform
>>> import socket
>>> import os
>>> platform.node()
'DARK-TOWER'
>>> socket.gethostname()
'DARK-TOWER'
>>> os.environ['COMPUTERNAME']
'DARK-TOWER'
В принципе, у меня есть пара компьютеров Windows в моей сети, на которых будет запущен python script. В script должен использоваться другой набор параметров конфигурации, в зависимости от того, какой компьютер использует этот script.
Как мне получить это имя компьютера в python script?
Скажем, script работал на компьютере под названием DARK-TOWER, я бы хотел написать что-то вроде этого:
>>> python.library.get_computer_name()
'DARK-TOWER'
Есть ли стандартная или сторонняя библиотека, которую я могу использовать?
Оказалось, что есть три варианта (в том числе два уже ответили ранее):
>>> import platform
>>> import socket
>>> import os
>>> platform.node()
'DARK-TOWER'
>>> socket.gethostname()
'DARK-TOWER'
>>> os.environ['COMPUTERNAME']
'DARK-TOWER'
import socket
socket.gethostname()
От 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")
Я предпочитаю это при разработке кросс-паттерн приложений, чтобы быть уверенным;)
Так как скрипты 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 будет работать красиво.
import socket
pc = socket.gethostname()
print pc