基本上,我的网络上有几台Windows计算机将运行python脚本。应在脚本中使用一组不同的配置选项,具体取决于运行此脚本的计算机。
我如何在python脚本中获取该计算机名称?
假设脚本在名为DARK-TOWER的计算机上运行,我想写这样的东西:
>>> python.library.get_computer_name()
'DARK-TOWER'
我可以使用标准或第三方库吗?
答案 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)
来自https://mail.python.org/pipermail/python-list/2006-April/397494.html
import os
os.getenv('COMPUTERNAME')
答案 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 GetComputerName或GetComputerNameEx
您可以获取完全限定的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