我正在为本地网络写一个聊天程序。我希望能够识别计算机,并获得用户设置的计算机名称与Python。
当前回答
从至少python >= 3.3:
你可以使用字段nodename,避免使用数组索引:
os.uname().nodename
虽然,甚至os的文档。Uname建议使用socket.gethostname()
其他回答
关于什么:
import platform
h = platform.uname()[1]
实际上,你可能想看看platform.uname()中的所有结果
Socket.gethostname()可以做什么
使用socket.getfqdn()获取完全限定的主机名
import socket
print socket.getfqdn()
你必须执行这行代码
sock_name = socket.gethostname()
然后你可以使用名称来查找地址:
print(socket.gethostbyname(sock_name))
os.getenv('HOSTNAME')和os.getenv。environ['HOSTNAME']并不总是有效。在cron作业和WSDL中,没有设置HTTP HOSTNAME。用这个代替:
import socket
socket.gethostbyaddr(socket.gethostname())[0]
它总是(即使在Windows上)返回一个完全限定的主机名,即使你在/etc/hosts中定义了一个短别名
如果你在/etc/hosts中定义了一个别名,那么socket.gethostname()将返回该别名。Platform.uname()[1]做同样的事情。
我遇到了一个上述方法不起作用的案例。这是我现在使用的:
import socket
if socket.gethostname().find('.')>=0:
name=socket.gethostname()
else:
name=socket.gethostbyaddr(socket.gethostname())[0]
它首先调用gethostname,看看它是否返回类似主机名的东西,如果不是,它就使用我原来的解决方案。
推荐文章
- 将Pandas或Numpy Nan替换为None以用于MysqlDB
- 使用pandas对同一列进行多个聚合
- 使用Python解析HTML
- django MultiValueDictKeyError错误,我如何处理它
- 如何在for循环期间修改列表条目?
- 我如何在Django中创建一个鼻涕虫?
- 没有名为'django.core.urlresolvers'的模块
- 蟒蛇导出环境文件
- Django - makemigrations -未检测到任何更改
- SQLAlchemy:引擎、连接和会话差异
- 在Python Pandas中删除多个列中的所有重复行
- 更改pandas DataFrame中的特定列名
- 将Pandas多索引转换为列
- 熊猫在每组中获得最高的n个记录
- 熊猫数据帧得到每组的第一行