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