|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- <p> begin = int(begin) - 1
- end = int(end)
- lines = end - begin
- f = open(file_name)
-
- 1. for i in range(begin): # 用于消耗掉begin之前的内容
- f.readline()
- 2. if lines < 0:
- print(f.read())
- else:
- for j in range(lines):
- print(f.readline(), end='')</p><p>这是课后29讲第三题的代码有几个问题:</p><p>(1)在1那个代码那里 for i in range(begin): f.readline();请问这个程序是将第0—第begin—1行的文件都给读出来吗?读出来的话为什么旁边注释说的是用于消耗掉begin之前的内容呢?是怎么个消耗法呢?还有既然i是有范围的,readline后面的括号里为什么不加一个i呢即f.readline(i),不加i的话怎么知道读出哪些行出来呢?</p><p>(2)在2那个代码那里,line怎么可能会小于0呢?end永远比begin大啊?2中的read和readline有区别吗在打印的时候?</p>
复制代码
本帖最后由 Twilight6 于 2020-6-11 16:06 编辑
(1)在1那个代码那里 for i in range(begin): f.readline();请问这个程序是将第0—第begin—1行的文件都给读出来吗?
是的,从第一行开始读取,因为readline() 每次只读取一行,这次读取完一行后 文件指针就会停留到下一行的开头位置,然后如果下次 再次调用 readline 就等于开始读下一行了
读出来的话为什么旁边注释说的是用于消耗掉begin之前的内容呢?是怎么个消耗法呢?
就是通过一行一行读取文件来移动文件 指针 ,来模拟消耗,每次读一行文件指针就移动一行
还有既然i是有范围的,readline后面的括号里为什么不加一个i呢即f.readline(i),不加i的话怎么知道读出哪些行出来呢?
readline 里面的参数是填读取这一行的多少个字符,而不是读取几行,而且填入后不改变指针位置;通过文件指针每次读取文件读取位置都会发生改变
|
|