读取文件,打印制定的行

需求:用户可以随意输入需要显示的行数。比如输入13:21,则打印第13行到21行;输入:21,则打印前21行;输入21:,则打印从第21行到文件末尾所有内容;输入:,则打印整个文档。

自己写的繁琐的代码:

# -*- coding: utf-8 -*-
def file_show(file_name,start_number,end_number):
    if start_number!=0 and end_number!=0:
        print("文件%s的从%d行到%d行的内容如下:" %(file_name,start_number,end_number))
        f1 = open(file_name, "r")
        for i in range(start_number-1):
            f1.readline()
        for j in range(end_number-start_number+1):
            print (f1.readline(),end="")
    elif start_number==0 and end_number!=0:
        print("文件%s的从开始到第%d行的内容如下:" %(file_name,end_number))
        f1 = open(file_name, "r")
        for i in range(end_number):
            print (f1.readline(),end="")
    elif start_number != 0 and end_number == 0:
        print("文件%s的从第%d行到末尾的内容如下:" % (file_name, start_number))
        f1 = open(file_name, "r")
        for i in range(start_number-1):
            f1.readline()
        for j in range(count-start_number+1):
            print (f1.readline(),end="")
    elif start_number == 0 and end_number == 0:
        print("文件%s的全文内容如下:" % (file_name))
        f1 = open(file_name, "r")
        for i in range(count):
            print(f1.readline(), end="")

    f1.close()


file_name=input("请输入要打开的文件(C:\\test.txt):")
count = len(open(file_name, 'rU').readlines())
string1=input("请输入需要显示的行数【格式如13:21或 :21 或 21:】:")
string2=string1.split(":")
if string2[0]!="" and string2[1]!="":
    start_number=int(string2[0])
    end_number=int(string2[1])
elif string2[0]=="" and string2[1]!="":
    start_number=int(0)
    end_number=int(string2[1])
elif string2[0]!="" and string2[1]=="":
    start_number=int(string2[0])
    end_number=int(0)
elif string2[0]=="" and string2[1]=="":
    start_number=int(0)
    end_number=int(0)

# print ("number1:",start_number)
# print ("number2:",end_number)

file_show(file_name,start_number,end_number)

参考别人的代码:

def file_view(file_name, line_num):
    if line_num.strip() == ':':
        begin = '1'
        end = '-1'

    (begin, end) = line_num.split(':')

    if begin == '':
        begin = '1'
    if end == '':
        end = '-1'

    if begin == '1' and end == '-1':
        prompt = '的全文'
    elif begin == '1':
        prompt = '从开始到%s' % end
    elif end == '-1':
        prompt = '从%s到结束' % begin
    else:
        prompt = '从第%s行到第%s行' % (begin, end)

    print('\n文件%s%s的内容如下:\n' % (file_name, prompt))

    begin = int(begin) - 1
    end = int(end)
    lines = end - begin

    f = open(file_name)  

    for i in range(begin):  # 用于消耗掉begin之前的内容
        f.readline()

    if lines < 0:
        print(f.read())
    else:
        for j in range(lines):
            print(f.readline(), end='')

    f.close()

file_name = input(r'请输入要打开的文件(C:\\test.txt):')
line_num = input('请输入需要显示的行数【格式如 13:21 或 :21 或 21: 或 : 】:')
file_view(file_name, line_num)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值