鱼C论坛

 找回密码
 立即注册
查看: 1668|回复: 3

[已解决]29讲作业-任意输入行数打印文件中的内容,打印不出来

[复制链接]
发表于 2021-8-19 23:29:41 | 显示全部楼层 |阅读模式
4鱼币
请问各位大神,我这个代码最后会打印出很多个空行,行数是对的,但是内容是空白,怎么回事呀?
ps:已检查文档编码格式,就是UTF-8
  1. def printsome(file_name,a,b):
  2.     f = open(file_name,encoding = 'UTF-8')
  3.     listf = list(f)
  4.     count = 1
  5.     if a == '':
  6.         a = 1
  7.     if b == '':
  8.         b = len(listf)
  9.     a = int(a)
  10.     b = int(b)
  11.     print('文件%s的从第%s行到第%s行的内容如下:' % (file_name,a,b))
  12.     while count < a:
  13.         f.readline()
  14.         count += 1
  15.     while count <= b:
  16.             print(f.readline())
  17.             count += 1
  18.     f.close()
  19.    
  20. file_name = str(input('请输入要打开的文件:'))
  21. input0 = str(input('请输入需要显示的行数【格式如13:21或:21或21:】'))
  22. (a,b) = input0.split(':')
  23. printsome(file_name,a,b)
复制代码
最佳答案
2021-8-19 23:29:42
你源代码列表化文件会将文件指针跳到后面了,要不然你就用seek跳回开头
方法一
  1. f = open(file_name, encoding='UTF-8')
  2.     count = 1
  3.     if a == '':
  4.         a = 1
  5.     if b == '':
  6.         b = len(list(f)) # 方法一
复制代码

方法二
  1. f = open(file_name, encoding='UTF-8')
  2.     listf = list(f)
  3.     f.seek(0, 0)  #方法二
  4.     count = 1
  5.     if a == '':
  6.         a = 1
  7.     if b == '':
  8.         b = len(listf)
复制代码

最佳答案

查看完整内容

你源代码列表化文件会将文件指针跳到后面了,要不然你就用seek跳回开头 方法一 方法二
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-19 23:29:42 | 显示全部楼层    本楼为最佳答案   
你源代码列表化文件会将文件指针跳到后面了,要不然你就用seek跳回开头
方法一
  1. f = open(file_name, encoding='UTF-8')
  2.     count = 1
  3.     if a == '':
  4.         a = 1
  5.     if b == '':
  6.         b = len(list(f)) # 方法一
复制代码

方法二
  1. f = open(file_name, encoding='UTF-8')
  2.     listf = list(f)
  3.     f.seek(0, 0)  #方法二
  4.     count = 1
  5.     if a == '':
  6.         a = 1
  7.     if b == '':
  8.         b = len(listf)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-20 05:39:47 From FishC Mobile | 显示全部楼层
都已经转到列表里面,就直接操作列表不好吗
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-20 07:32:44 | 显示全部楼层
楼上大佬说得对
你都列表化了,切片不香吗
  1. def printsome(file_name, a, b):
  2.     f = open(file_name, encoding='UTF-8')
  3.     listf = list(f)
  4.     content = listf[int(a)-1:int(b)]  # intput返回的是str,int(a)-1是因为切片是左开右闭
  5.     for i in content:
  6.         print(i)
  7.     f.close()


  8. file_name = str(input('请输入要打开的文件:'))
  9. input0 = str(input('请输入需要显示的行数【格式如13:21或:21或21:】'))
  10. (a, b) = input0.split(':')
  11. printsome(file_name, a, b)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-19 22:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表