我的网络上有几台Windows计算机将运行Python脚本。根据运行此脚本的计算机,应该在脚本中使用一组不同的配置选项。我怎样才能在python脚本中得到那个计算机名呢?假设脚本运行在名为DARK-TOWER的计算机上,我想写这样的代码:
>>> python.library.get_computer_name() 'DARK-TOWER'
是否有我可以使用的标准库或第三方库?
ncgqoxb01#
事实证明,有三种选择(包括前面已经回答的两种):
>>> import platform >>> import socket >>> import os >>> platform.node() 'DARK-TOWER' >>> socket.gethostname() 'DARK-TOWER' >>> os.environ['COMPUTERNAME'] # WORK ONLY ON WINDOWS 'DARK-TOWER'
sd2nnvve2#
import socket socket.gethostname()
kkih6yb83#
从https://mail.python.org/pipermail/python-list/2006-April/397494.html开始
import os os.getenv('COMPUTERNAME')
l7wslrjt4#
正如Eric Palakovich卡尔所说,您可以使用这三种变体。我更喜欢将它们一起使用:
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")
我更喜欢在开发跨平台应用程序时使用它;)
zzoitvuj5#
由于python脚本肯定是在Windows系统上运行的,因此应该使用Win32 API GetComputerName或GetComputerNameEx您可以获得完全限定的DNS名称、NETBIOS名称或各种不同的名称。
import win32api win32api.GetComputerName() >>'MYNAME'
或者:
import win32api WIN32_ComputerNameDnsHostname = 1 win32api.GetComputerNameEx(WIN32_ComputerNameDnsHostname) >> u'MYNAME'
kqhtkvqz6#
import socket pc = socket.gethostname() print pc
qybjjes17#
我敢打赌gethostname会工作得很漂亮。
7条答案
按热度按时间ncgqoxb01#
事实证明,有三种选择(包括前面已经回答的两种):
sd2nnvve2#
kkih6yb83#
从https://mail.python.org/pipermail/python-list/2006-April/397494.html开始
l7wslrjt4#
正如Eric Palakovich卡尔所说,您可以使用这三种变体。
我更喜欢将它们一起使用:
我更喜欢在开发跨平台应用程序时使用它;)
zzoitvuj5#
由于python脚本肯定是在Windows系统上运行的,因此应该使用Win32 API GetComputerName或GetComputerNameEx
您可以获得完全限定的DNS名称、NETBIOS名称或各种不同的名称。
或者:
kqhtkvqz6#
qybjjes17#
我敢打赌gethostname会工作得很漂亮。