读取文件,打印制定的行

原创 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...
  • meteor_1988
  • meteor_1988
  • 2014年07月09日 17:29
  • 980

shell实例浅谈之六文件特定行打印的多种方法

一、问题       DOS是Denial of Service的简称,即拒绝服务,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络...
  • taiyang1987912
  • taiyang1987912
  • 2014年10月13日 21:45
  • 8286

Python 实例一 统计指定文件的行数或读取指定文件指定行数的内容

1. pycharm 开发环境中新建 #coding=utf-8 count = len(open('F:\test\test.txt','rU').readlines()) print(count...
  • daiqinge
  • daiqinge
  • 2016年01月16日 23:05
  • 2441

shell awk读取文件中的指定行的指定字段

1.awk功能和实用形式 awk指定读取文件中的某一行的某个字段 awk      可以设置条件来输出文件中m行到n行中每行的指定的k字段,使用格式如下 awk    ‘NR==m,...
  • huangjin0507
  • huangjin0507
  • 2015年05月06日 18:43
  • 4499

C语言读取指定行文本

当Loadrunner参数文件,每行取值文件过长且难以保存成功时,可以尝试使用读取文件行的方式取参数。...
  • flyaway_07
  • flyaway_07
  • 2015年12月11日 15:18
  • 2366

Perl中文件读取操作

一、打开、关闭文件 二、读文件 三、写文件 四、判断文件状态 五、命令行参数 六、打开管道 一、打开、关闭文件   语法为open (filevar, filename),其中filevar为文...
  • yangxuan12580
  • yangxuan12580
  • 2016年05月26日 12:34
  • 3479

读取csv文件指定行列的元素/读取csv文件到数组

try{ BufferedReader reader = new BufferedReader(new FileReader("E:\\sights.csv")); String line; ...
  • fanxing1964
  • fanxing1964
  • 2016年08月31日 00:54
  • 1798

C语言如何从指定行读取文件

在这里我们一共有三个功能,写文件,读文件,从指定行中读取文件,代码比较简单不多加解释。 #include #include #include #define MAX_LENTH_OF_LINE...
  • DaveBobo
  • DaveBobo
  • 2016年06月13日 09:00
  • 3372

linux读取按行读写文本文件

#include stdio.h> #include unistd.h> #include fcntl.h> #include string.h> #include malloc.h> #i...
  • imxiangzi
  • imxiangzi
  • 2015年05月21日 23:19
  • 2620

【Node.js】'readline' 逐行读取、写入文件内容

运用readline逐行读取的两种实现效果图如下:左边1.log 为源文件右边1.readline.log为复制后的文件下边为命令行输出实现方式一:var readline = require('re...
  • sodino
  • sodino
  • 2016年04月28日 16:49
  • 14588
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:读取文件,打印制定的行
举报原因:
原因补充:

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