读取文件,打印制定的行

原创 2017年01月03日 09:07:10

需求:用户可以随意输入需要显示的行数。比如输入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)
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

NIO按行读取文件内容,并打印出来

package com.broada.wssh.groovy; import java.io.File; import java.io.FileInputStream; import java.io...

JAVA 读取 制定路径的 XML 文件 和 获取 服务器路径

/** * 读取所有地区(全部为中文名) * * @return */ public static List getAreaList() { List result = new...

从屏幕读取字符串,并提取其中数字串,再次打印到屏幕或写入一个文件

细节决定成败,毕业两年多,几乎t

利用python读取文件 然后以表格的形式打印出去

##coding:utf-8 ''' Created on 2014-7-28 @author: Administrator ''' #coding:utf-8 def html_table...

C++ 读取PE文件并十六进制打印输出

分析PE结构的时候,想自己把里边的结构理解后打印LoadPE分析的东西,在此先把读取PE 结构的C++代码贴出来: #include #include #include #include #...

使用标准输出流(system.out)和打印流 (PrintWriter)来读取txt文件

在电脑某盘根目录下放一个文本文件.里面写一首诗(内容随意发挥).把诗的内容输出到控制台. 要求: 1.使用标准输出流(system.out)来做。 2.使用打印流;  (PrintWrite...

Java读取txt格式文件打印到控制台

import java.io.BufferedReader; import java.io.File; import java.io.FileReader; public class Demo1 {...

c写个linux的小程序,从bin文件中读取数据,打印结构体中的成员变量。

最近实习接触到一个任务,这个任务的需求是:   写个linux的小程序,当输入参数-t时,打印当前时间;当输入参数-f时,则打印出头文件中的所有结构体。   我手中有的材料是: 一个头文件,...

day20打印流,删除一个带内容的目录,用于记录应用程序运行次数,多个读取流变成一个读取流,切割文件

/* 打印流: 该流提供了打印方法,可以将各种数据类型的数据都原样打印 字节打印流 PrintStream 构造函数可以接收的参数类型 1.file对象 file 2.字符串路径。S...

C#按行读取文件

  • 2012-02-19 16:19
  • 62KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)