Python 数组对可以读取的行数有限制吗?
然后我得到以下回溯:Python 数组对可以读取的行数有限制吗?,python,arrays,list,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 = parserl
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])
回溯(最近一次呼叫最后一次):
文件“C:\Python34\listest.py”,第16行,在
parserarrayI910=parserlines[11]
索引器:列表索引超出范围
文件中有16行需要读取。还有更好的方法吗?不,Python的大小没有限制,这是您正在使用的(系统内存除外)。我相信它们是作为灵活的阵列实现的;这意味着它们是引擎盖下的阵列,但它们会动态调整大小,以适应添加到其中的项目数量
问题在于您的文件以及如何读取。正如评论中所建议的那样,可能是行尾被曲解了。读取文件后,请立即打印
parserlines
变量,它将显示文件的实际读取方式。考虑使用该模块以便于查看:<代码> pPr.pPress(PARSRILN) ./P> > P>如果数据文件是由观察MSDOS文件约定的程序生成的,那么行分隔符是“\r\n”而不是“\n”。
该约定可通过稍微修改打开的:
Traceback (most recent call last):
File "C:\Python34\listtest.py", line 16, in <module>
parserarrayI910 = parserlines[11]
IndexError: list index out of range
添加
t
意味着使用MSDOS文本模式约定。您知道Python中的列表以零开始吗?或者您故意用parserlines[1]
跳过第一个元素?是否确定line.strip().split(',')
会给出所需的结果?是的,第一行是标题。我需要数组中的单个元素。你能发布一小部分输入文件(2-5行)吗?没有16行。检查行endingsI dunno,我赞成显式声明文件模式,特别是因为不同的开放协议可以有不同的默认模式(如tempfile等)。然而,在这里使用“with open”是。。。。这是必须的。
open("C:/Python34/filename_convention.txt", "rt")