我正在为本地网络写一个聊天程序。我希望能够识别计算机,并获得用户设置的计算机名称与Python。
当前回答
使用套接字及其gethostname()功能。这将得到运行Python解释器的计算机的主机名:
import socket
print(socket.gethostname())
其他回答
如果我没猜错,你是在找插座。gethostname功能:
>> import socket
>> socket.gethostname()
'terminus'
你必须执行这行代码
sock_name = socket.gethostname()
然后你可以使用名称来查找地址:
print(socket.gethostbyname(sock_name))
在某些系统上,主机名是在环境中设置的。如果是这样的话,操作系统模块可以通过os.getenv把它从环境中拉出来。例如,如果HOSTNAME是包含你想要的内容的环境变量,下面将得到它:
import os
system_name = os.getenv('HOSTNAME')
Update: As noted in the comments, this doesn't always work, as not everyone's environment is set up this way. I believe that at the time I initially answered this I was using this solution as it was the first thing I'd found in a web search and it worked for me at the time. Due to the lack of portability I probably wouldn't use this now. However, I am leaving this answer for reference purposes. FWIW, it does eliminate the need for other imports if your environment has the system name and you are already importing the os module. Test it - if it doesn't work in all the environments in which you expect your program to operate, use one of the other solutions provided.
我需要在PyLog conf文件中使用的PC的名称,并且套接字库不可用,但操作系统库可用。
对于Windows,我使用的是:
os.getenv('COMPUTERNAME', 'defaultValue')
哪里defaultValue是一个字符串,以防止None返回
你可能会加载操作系统模块,所以另一个建议是:
import os
myhost = os.uname()[1]
推荐文章
- ValueError: numpy。Ndarray大小改变,可能表示二进制不兼容。期望从C头得到88,从PyObject得到80
- Anaconda /conda -安装特定的软件包版本
- 我在哪里调用Keras的BatchNormalization函数?
- 打印测试执行时间并使用py.test锁定缓慢的测试
- 插入一行到熊猫数据框架
- 要列出Pandas DataFrame列
- 在Django模型中存储电话号码的最佳方法是什么?
- 从导入的模块中模拟函数
- 滚动或滑动窗口迭代器?
- python的方法找到最大值和它的索引在一个列表?
- 如何读取文件的前N行?
- 如何删除matplotlib中的顶部和右侧轴?
- 解析.py文件,读取AST,修改它,然后写回修改后的源代码
- Visual Studio Code:如何调试Python脚本的参数
- 使用元组/列表等等。从输入vs直接引用类型如list/tuple/etc