web-dev-qa-db-ja.com

実行中のWindowsコンピューターの名前の取得python script?

基本的に、ネットワーク上にpythonスクリプトを実行するWindowsコンピューターが2つあります。このスクリプトを実行しているコンピューターに応じて、スクリプトで異なる構成オプションのセットを使用する必要があります。

pythonスクリプトでそのコンピューター名を取得するにはどうすればよいですか?

スクリプトがDARK-TOWERという名前のコンピューターで実行されていたとしましょう。次のようなものを書きたいと思います。

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

使用できる標準またはサードパーティのライブラリはありますか?

75

3つのオプションがあります(2つは既に回答済みです)。

>>> import platform
>>> import socket
>>> import os
>>> platform.node()
'DARK-TOWER'
>>> socket.gethostname()
'DARK-TOWER'
>>> os.environ['COMPUTERNAME']
'DARK-TOWER'
133
import socket
socket.gethostname()
26
inkedmn
16
oneporter

エリック・パラコビッチ・カーが言ったように、これらの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アプリケーションを開発するとき、私はそれを好む;)

8
Faminator

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'
6
Brian R. Bondy

gethostname は見事に動作するでしょう。

3
Promit