数组是否可以读取多少行?

时间:2015-06-30 19:03:49

标签: python arrays list

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 (most recent call last):  
   File "C:\Python34\listtest.py", line 16, in <module>  
      parserarrayI910 = parserlines[11]  
IndexError: list index out of range

文件中有16行需要读取。还有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

不,Python lists的大小没有限制,这是你正在使用的(除了系统的内存)。我相信它们是作为灵活的阵列实现的;这意味着它们是引擎盖下的阵列,但它们会动态调整大小以适应您添加到它们中的许多项目。

问题在于你的文件以及它是如何被读入的。正如评论中所建议的那样,可能是行结尾被误解。尝试在阅读文件后立即打印出parserlines变量,它会向您显示文件的实际读入方式。请考虑使用pretty print模块,以便更轻松地查看:pprint.pprint(parserlines)

答案 1 :(得分:0)

如果数据文件是由观察MSDOS文件约定的程序生成的,则行分隔符为“\ r \ n”而不是“\ n”。

可以通过稍微修改open:

来使用该约定
open("C:/Python34/filename_convention.txt", "rt")

添加t表示使用MSDOS文本模式约定。