【发布时间】:2020-08-13 01:04:11
【问题描述】:
我在多台计算机之间切换工作,直到我们为我们的数据运行服务器,我必须手动更改存储我的掩码的文件的路径。这让我很恼火,因为我经常切换并且文件路径不同。所以,我正在尝试使用套接字来管理我不同计算机上的文件路径。这是到目前为止的代码:
import socket
hostname = socket.gethostname()
ip_address = socket.gethostbyname(hostname)
if ip_address is '124.0.1.1':
print('Working on laptop 1:')
masked_data = '/mnt/c/Users/file/path/woot/woot'
else:
raise ValueError('Which computer are you on? Need to know for mask filepath...')
exit()
我想要的基本上是这样的:1)从计算机上提取 IP,2)如果是笔记本电脑 1 使用该计算机的 IP 并遵循该文件路径,3)如果不是,则引发错误。 (我会为几台电脑更新这个,但这里谁需要复杂性?)
我遇到的问题是:
当我运行如上所示的脚本时,它会跳过 if 语句并引发错误。但是,如果我添加行 socket.gethostbyname(hostname) 输出的字符串,它可以正常工作。
也就是说,上面的代码不起作用,但下面的代码可以:
import socket
ip_address = '124.0.1.1'
if ip_address is '124.0.1.1':
print('Working on laptop 1:')
masked_data = '/mnt/c/Users/file/path/woot/woot'
else:
raise ValueError('Which computer are you on? Need to know for mask filepath...')
exit()
在 Ipython 中,当我运行脚本并检查 ip_address 是什么时,它实际上是一个带有 IP 地址的字符串。即,
In [1]: hostname = socket.gethostname()
In [2]: ip_address = socket.gethostbyname(hostname)
In [3]: ip_address
Out[3]: '124.0.1.1'
我不知道发生了什么,我不确定为什么这不起作用。
【问题讨论】: