获取运行python脚本的Windows计算机的名称?

时间:2009-04-28 20:49:12

标签: python windows networking

基本上,我的网络上有几台Windows计算机将运行python脚本。应在脚本中使用一组不同的配置选项,具体取决于运行此脚本的计算机。

我如何在python脚本中获取该计算机名称?

假设脚本在名为DARK-TOWER的计算机上运行,​​我想写这样的东西:

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

我可以使用标准或第三方库吗?

7 个答案:

答案 0 :(得分:130)

事实证明有三个选项(包括之前已经回答的两个选项):

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

答案 1 :(得分:25)

import socket
socket.gethostname()

答案 2 :(得分:15)

答案 3 :(得分:8)

正如Eric Palakovich Carr所说,你可以使用这三种变体。

我更喜欢一起使用它们:

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

在开发交叉模式应用程序时,我更喜欢它;)

答案 4 :(得分:6)

由于python scrips肯定会在Windows系统上运行,因此您应该使用Win32 API GetComputerNameGetComputerNameEx

您可以获取完全限定的DNS名称,NETBIOS名称或各种不同的内容。

import win32api
win32api.GetComputerName()

>>'MYNAME'

或者:

import win32api
WIN32_ComputerNameDnsHostname = 1 
win32api.GetComputerNameEx(WIN32_ComputerNameDnsHostname)

>> u'MYNAME'

答案 5 :(得分:3)

我打赌gethostname会很漂亮。

答案 6 :(得分:0)

import socket
pc = socket.gethostname()
print pc