【发布时间】:2015-06-30 19:03:48
【问题描述】:
parserlines = [line.strip().split(",") for line in open("C:\\Python34\\filename_convention.txt", 'r')]
print(parserlines[1])
#[1]source_dir[2]source_pattern[3]target_dir[4]prefix
parserarrayI101 = parserlines[1]
parserarrayO101 = parserlines[2]
parserarrayI103 = parserlines[3]
parserarrayO103 = parserlines[4]
parserarrayI195 = parserlines[5]
parserarrayO195 = parserlines[6]
parserarrayI199 = parserlines[7]
parserarrayO199 = parserlines[8]
parserarrayI900 = parserlines[9]
parserarrayO900 = parserlines[10]
parserarrayI910 = parserlines[11]
parserarrayO910 = parserlines[12]
parserarrayI195 = parserlines[13]
parserarrayO195 = parserlines[14]
parserarrayI199 = parserlines[15]
parserarrayO199 = parserlines[16]
print(parserarrayI900[2])
然后我得到以下 Traceback:
Traceback (most recent call last):
File "C:\Python34\listtest.py", line 16, in <module>
parserarrayI910 = parserlines[11]
IndexError: list index out of range
文件中有 16 行需要读取。还有更好的方法吗?
【问题讨论】:
-
你知道在 Python 中列表是从零开始的吗?还是您故意使用
parserlines[1]跳过第一个元素?你确定line.strip().split(',')给出了你想要的结果吗? -
是的,第一行是标题。我需要数组中的各个元素。
-
能否请您发布一点输入文件(2-5 行)?
-
没有 16 行。检查行尾
-
我不知道,我赞成显式声明文件模式,特别是因为不同的开放协议可以有不同的默认模式(例如 tempfile 等)。但是,在这里使用“with open”是……必须的。