wmy1212 发表于 2021-8-19 23:29:41

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

请问各位大神,我这个代码最后会打印出很多个空行,行数是对的,但是内容是空白,怎么回事呀?
ps:已检查文档编码格式,就是UTF-8
def printsome(file_name,a,b):
    f = open(file_name,encoding = 'UTF-8')
    listf = list(f)
    count = 1
    if a == '':
      a = 1
    if b == '':
      b = len(listf)
    a = int(a)
    b = int(b)
    print('文件%s的从第%s行到第%s行的内容如下:' % (file_name,a,b))
    while count < a:
      f.readline()
      count += 1
    while count <= b:
            print(f.readline())
            count += 1
    f.close()
   
file_name = str(input('请输入要打开的文件:'))
input0 = str(input('请输入需要显示的行数【格式如13:21或:21或21:】'))
(a,b) = input0.split(':')
printsome(file_name,a,b)

大马强 发表于 2021-8-19 23:29:42

你源代码列表化文件会将文件指针跳到后面了,要不然你就用seek跳回开头
方法一
f = open(file_name, encoding='UTF-8')
    count = 1
    if a == '':
      a = 1
    if b == '':
      b = len(list(f)) # 方法一
方法二
f = open(file_name, encoding='UTF-8')
    listf = list(f)
    f.seek(0, 0)#方法二
    count = 1
    if a == '':
      a = 1
    if b == '':
      b = len(listf)

wp231957 发表于 2021-8-20 05:39:47

都已经转到列表里面,就直接操作列表不好吗

大马强 发表于 2021-8-20 07:32:44

楼上大佬说得对
你都列表化了,切片不香吗
def printsome(file_name, a, b):
    f = open(file_name, encoding='UTF-8')
    listf = list(f)
    content = listf# intput返回的是str,int(a)-1是因为切片是左开右闭
    for i in content:
      print(i)
    f.close()


file_name = str(input('请输入要打开的文件:'))
input0 = str(input('请输入需要显示的行数【格式如13:21或:21或21:】'))
(a, b) = input0.split(':')
printsome(file_name, a, b)
页: [1]
查看完整版本: 29讲作业-任意输入行数打印文件中的内容,打印不出来