鱼C论坛

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

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

[复制链接]
发表于 2021-8-19 23:29:41 | 显示全部楼层 |阅读模式
4鱼币
请问各位大神,我这个代码最后会打印出很多个空行,行数是对的,但是内容是空白,怎么回事呀?
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)

最佳答案

查看完整内容

你源代码列表化文件会将文件指针跳到后面了,要不然你就用seek跳回开头 方法一 方法二
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-20 05:39:47 From FishC Mobile | 显示全部楼层
都已经转到列表里面,就直接操作列表不好吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-8-20 07:32:44 | 显示全部楼层
楼上大佬说得对
你都列表化了,切片不香吗
def printsome(file_name, a, b):
    f = open(file_name, encoding='UTF-8')
    listf = list(f)
    content = listf[int(a)-1:int(b)]  # 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)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 17:13

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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