[英]How to compare list with actual string in Python?
我試圖在Python中獲取我的計算機的hostname
。 我可以使用socket
獲取主機名。 現在,我需要將此hostname
與colo
list進行比較,並查看該hostname
是否屬於哪個datacenter
。 它來自dc1或dc2或dc3。
#!/usr/bin/python
colo = ['dc1', 'dc2', 'dc3']
hostname = socket.gethostname()
如何檢查該主機名是否來自哪個colo,然后將其打印出來?
示例主機名將如下所示-
dc1dbx1145.dc1.host.com
dc1dbx1146.dc1.host.com
dc1dbx1147.dc1.host.com
dc1dbx1148.dc1.host.com
拆分.
並測試第二個值:
location = hostname.split('.')[1]
演示:
>>> hostname = 'dc1dbx1145.dc1.host.com'
>>> hostname.split('.')[1]
'dc1'
您可能想通過以下方法驗證找到的名稱確實是可識別的位置:
if location not in colo:
print 'Not a recognized location'
如果您不知道位置可能是哪一部分,請使用:
location = next((part for part in hostname.split('.') if part in colo), None)
if location is None:
print 'Not a recognized location'
如果您的主機名是一致的並且始終使用此格式,則可以嘗試如下操作:
data = hostname.split('.')
if len(data) == 4 and data[1] in colo:
print "Datacenter: %s" % data[1]
else:
print "Unknown hostname"
if
在獲取主機名時遇到錯誤,則if
語句只是為了避免出現異常。
您可以使用以下代碼段:
colo = ['dc1', 'dc2', 'dc3']
hostname = socket.gethostname()
term= hostname.split('.')[1]
print filter(lambda x: term in x,colo)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.