关闭

读取文件,打印制定的行

标签: python
69人阅读 评论(0) 收藏 举报
分类:

需求:用户可以随意输入需要显示的行数。比如输入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)
0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:19895次
    • 积分:493
    • 等级:
    • 排名:千里之外
    • 原创:28篇
    • 转载:10篇
    • 译文:0篇
    • 评论:2条
    文章分类
    文章存档
    最新评论