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

我的网络上有几台 Windows 计算机将运行一个 Python 脚本。根据运行此脚本的计算机,脚本中应使用一组不同的配置选项。

我如何在 Python 脚本中获得这个计算机名称?

让我们假设这个脚本运行在一台名为 DARK-TOWER 的计算机上,我想这样写:

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

有没有一个标准的或第三方的图书馆,我可以使用?

97436 次浏览

我打赌 地名会很好用的。

由于 python 脚本肯定是在 Windows 系统上运行的,因此应该使用 Win32API获取计算机名称获取计算机名称

您可以获得完全限定的 DNS 名称,或 NETBIOS 名称,或各种不同的东西。

import win32api
win32api.GetComputerName()


>>'MYNAME'

Or:

import win32api
WIN32_ComputerNameDnsHostname = 1
win32api.GetComputerNameEx(WIN32_ComputerNameDnsHostname)


>> u'MYNAME'
import socket
socket.gethostname()

原来有三种选择(包括前面已经回答过的两种) :

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

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

我更喜欢把它们放在一起使用:

def getpcname():
n1 = platform.node()
n2 = socket.gethostname()
n3 = os.environ["COMPUTERNAME"]
if n1 == n2 or n1 == n3:
return n1
elif n2 == n3:
return n2
else:
raise Exception("Computernames are not equal to each other")

我更喜欢在开发跨平台应用程序时使用它;)

import socket
pc = socket.gethostname()
print pc