基本的に、ネットワーク上にpythonスクリプトを実行するWindowsコンピューターが2つあります。このスクリプトを実行しているコンピューターに応じて、スクリプトで異なる構成オプションのセットを使用する必要があります。
pythonスクリプトでそのコンピューター名を取得するにはどうすればよいですか?
スクリプトがDARK-TOWERという名前のコンピューターで実行されていたとしましょう。次のようなものを書きたいと思います。
>>> python.library.get_computer_name()
'DARK-TOWER'
使用できる標準またはサードパーティのライブラリはありますか?
3つのオプションがあります(2つは既に回答済みです)。
>>> import platform
>>> import socket
>>> import os
>>> platform.node()
'DARK-TOWER'
>>> socket.gethostname()
'DARK-TOWER'
>>> os.environ['COMPUTERNAME']
'DARK-TOWER'
import socket
socket.gethostname()
から https://mail.python.org/pipermail/python-list/2006-April/397494.html
import os
os.getenv('COMPUTERNAME')
エリック・パラコビッチ・カーが言ったように、これらの3つのバリアントを使用できます。
私はそれらを一緒に使用することを好みます:
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")
クロスpatformアプリケーションを開発するとき、私はそれを好む;)
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'
gethostname は見事に動作するでしょう。