我有一个包含以下内容的文本文件
url1,user1,xxxxxxxxx
url2,user2,yyyyyyyyy
我有一个代码块,它应该根据传递的env
值(prod
或test
)获取值xxxxxxxxx
或yyyyyyyyy
)
#!/usr/bin/python
import os
class test:
def __init__(self, env):
self.env = env
def func(self):
res = []
try:
if os.path.exists("file.txt"):
try:
with open("file.txt", 'r') as fp:
for line in fp:
print("line is " +line)
line_api = line.split(',')[2]
print(line_api)
res.append(line_api)
print(res)
if self.env == "prod":
self.api = res[0]
print(self.api)
else:
self.api = res[1]
print(self.api)
except Exception as e:
print(e)
except Exception as e:
print(e)
执行else
部分时的值
list index out of range
现在,当传递的env
是prod
时,函数工作,但当值是test
并且执行else
部分时,list res
的值只有xxxxxx
,list中只有一个值,代码self.api = res[1]
失败print(res)
只打印['xxxxxxxxxxxx\n']
,但当传递url
时url1
print(res)
只打印两个['xxxxxxxxxx\n','yyyyyyyyyyy\n']
我的代码怎么了
代码的问题是,您用
line_api = line.split(',')[2]
拆分读入的每一行,[2]
引用了该列表中存在的第三个元素xxxxxxxxx
或yyyyyyyyy
,然后在调用self.api = res[0]
时引用了该列表中的第一个(也是唯一的)元素self.api = res[1]
总是抛出一个错误,因为它永远不会出现在1元素列表中。我不确定else语句的目标是什么,但我建议使用DirtyBit的优雅解决方案由于很难调试已经过多的代码,下面是一个较短的代码段:
使用^{} :
列表.txt:
因此:
输出:
相关问题 更多 >
编程相关推荐