enumerate()是python內置方法,遍歷序列中的元素以及下標,返回元組。
例子:
l1=["a","b","c","d","e","f"]
for item in enumerate(l1):
print (item)
# 結果:
(0, 'a')
(1, 'b')
(2, 'c')
(3, 'd')
(4, 'e')
(5, 'f')
for x,item in enumerate(l1):
print (x,item)
# 結果:
0 a
1 b
2 c
3 d
4 e
5 f
案例:利用open方法從文件讀書配置信息,進行分析
baseftp.ini配置文件信息:
======
# user passwd privilege path
# neo 123456 elradfmwM /home/neo/data
neo 123456 elradfmwM /home/neo
======
測試代碼:
#!/bin/python3.5
# -- coding:utf-8 --
# 判斷是否包含#號的行郭膛,如果是,則返回此行的#號之前的數據氛悬,如果#號在第一则剃,返回空列表
def ignor_octothrpe(text):
for x,item in enumerate(text):
if item == "#":
return text[:x] # 切片返回的數據類型也是為str
pass
return text # str數據類型
def init_user_config():
try:
f = open("baseftp.ini",encoding='utf-8')
f.close()
except:
print ("config file not found.")
exit (1)
while 1: # 無限循環(huán),達到目的圆雁,利用內部的break跳出此循環(huán)
line = f.readline() # line為讀取配置文件的每一行忍级,readline()一行一行的讀取,line為str字符串類型數據
if len(ignor_octothrpe(line)) > 3: # ignor_octothrpe(line) 返回的是一個字符串類型的數據,作為len的變量伪朽,得到還是一個字符串轴咱,
大于3,進行user_list.append,是否不夠合理烈涮?
user_list.append(line.split()) # split方法講字符串朴肺,以空格為分隔符號進行分列,每列追加到user_list列表
if not line: # line行讀完坚洽,即可跳出循環(huán)
break
if __name__ == '__main__':
user_list = []
init_user_config()
print (user_list) # 得到的最終這樣的列表[['neo', '123456', 'elradfmwM', '/home/neo']]