先来造一个文件:就叫作 test.txt吧,内容是下面这个样子:python
表头 1,数据1 2,数据2 3,数据3 4,数据4 5,数据5 6,数据6 7,数据7
那么咱们并不打算把这个表头给读出来spa
怎么办呢?code
先来打开文件:索引
fileName = 'test.txt' with open(fileName,'r',encoding='UTF-8') as f: lines = f.readlines() print(str(type(lines))+'\n'+str(lines))
获得下面的结果:ip
<class 'list'> ['表头\n', '1,数据1\n', '2,数据2\n', '3,数据3\n', '4,数据4\n', '5,数据5\n', '6,数据6\n', '7,数据7\n'] Process finished with exit code 0
那么 f.readlines()返回的是一个列表.每一项是一行it
这就好办了,由于列表是能够切片的嘛class
fileName = 'test.txt' with open(fileName,'r',encoding='UTF-8') as f: lines = f.readlines() print(str(type(lines))+'\n'+str(lines)) for i in lines[1:6]: print(i.strip('\n'))
这样一切片,就能获得须要的结果了:test
<class 'list'> ['表头\n', '1,数据1\n', '2,数据2\n', '3,数据3\n', '4,数据4\n', '5,数据5\n', '6,数据6\n', '7,数据7\n'] 1,数据1 2,数据2 3,数据3 4,数据4 5,数据5 Process finished with exit code 0
那么若是我想要隔一行读一行呢?coding
很简单,使用列表切片的步长就好了:file
fileName = 'test.txt' with open(fileName,'r',encoding='UTF-8') as f: lines = f.readlines() print(str(type(lines))+'\n'+str(lines)) for i in lines[1:6:2]: print(i.strip('\n'))
<class 'list'> ['表头\n', '1,数据1\n', '2,数据2\n', '3,数据3\n', '4,数据4\n', '5,数据5\n', '6,数据6\n', '7,数据7\n'] 1,数据1 3,数据3 5,数据5 Process finished with exit code 0
那么我再搞一下,每次输出的结果的行号是个斐波那契数列...也就是输出 1,1,2,3,5,8行这样,要怎么办呢?
def gap(maxtcl): n,a,b=0,0,1 while n<maxtcl: yield b a,b=b,a+b n=n+1 fileName = 'test.txt' with open(fileName,'r',encoding='UTF-8') as f: lines = f.readlines() print(str(type(lines))+'\n'+str(lines)) for i in gap(5): print(lines[i])
结果:
<class 'list'> ['表头\n', '1,数据1\n', '2,数据2\n', '3,数据3\n', '4,数据4\n', '5,数据5\n', '6,数据6\n', '7,数据7\n'] 1,数据1 1,数据1 2,数据2 3,数据3 5,数据5 Process finished with exit code 0
咱们思路如今转换到按照列表的索引进行单个元素的输出以后,再考虑一个问题,如何让输出的间隔变成1,2,3这样,也就是输出1,2,4,7行这样
fileName = 'test.txt' with open(fileName,'r',encoding='UTF-8') as f: lines = f.readlines() print(str(type(lines))+'\n'+str(lines)) linenum=1 for i in range(1,5): print(lines[linenum]) linenum=linenum+i
<class 'list'> ['表头\n', '1,数据1\n', '2,数据2\n', '3,数据3\n', '4,数据4\n', '5,数据5\n', '6,数据6\n', '7,数据7\n'] 1,数据1 2,数据2 4,数据4 7,数据7 Process finished with exit code 0
emmmm........暂时就想到这么多了,have fun :)