Подтвердить что ты не робот

Получение имени компьютера Windows, на котором запущен python script?

В принципе, у меня есть пара компьютеров Windows в моей сети, на которых будет запущен python script. В script должен использоваться другой набор параметров конфигурации, в зависимости от того, какой компьютер использует этот script.

Как мне получить это имя компьютера в python script?

Скажем, script работал на компьютере под названием DARK-TOWER, я бы хотел написать что-то вроде этого:

>>> python.library.get_computer_name()
'DARK-TOWER'

Есть ли стандартная или сторонняя библиотека, которую я могу использовать?

4b9b3361

Ответ 1

Оказалось, что есть три варианта (в том числе два уже ответили ранее):

>>> import platform
>>> import socket
>>> import os
>>> platform.node()
'DARK-TOWER'
>>> socket.gethostname()
'DARK-TOWER'
>>> os.environ['COMPUTERNAME']
'DARK-TOWER'

Ответ 2

import socket
socket.gethostname()

Ответ 4

Как сказал Эрик Палакович Карр, вы можете использовать эти три варианта.

Я предпочитаю использовать их вместе:

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")

Я предпочитаю это при разработке кросс-паттерн приложений, чтобы быть уверенным;)

Ответ 5

Так как скрипты python, безусловно, работают в системе Windows, вы должны использовать Win32 API GetComputerName или GetComputerNameEx

Вы можете получить полное имя DNS, или имя NETBIOS, или различные вещи.

import win32api
win32api.GetComputerName()

>>'MYNAME'

Или:

import win32api
WIN32_ComputerNameDnsHostname = 1 
win32api.GetComputerNameEx(WIN32_ComputerNameDnsHostname)

>> u'MYNAME'

Ответ 6

Я ставлю gethostname будет работать красиво.

Ответ 7

import socket
pc = socket.gethostname()
print pc