练习:用户输入文件名和行号,显示指定行数的内容

要求:
用户输入文件名
用户输入要显示的行数。
例如,输入【10:20】,显示第10行到第20行。
【:20】 从第一行到第20行
【10:】第10行到结尾

 1 import os
 2 
 3 def file_view(fileName,lineNum):
 4     #判断文件是否存在
 5     if fileName.strip()=="":
 6         print("ERROR:请输入文件名")
 7         return
 8     if not os.path.exists(fileName):
 9         print("ERROR:你输入的文件【%s】不存在" % fileName)
10         return
11     #打开文件
12     f=open(fileName)
13     f_total_lines=len(f.readlines())
14 
15 
16     #判断输入的行数格式是否正确
17     if lineNum.count(":") !=1:
18         print('ERROR:行数的格式不正确,":"有且只能出现一次')
19         return
20 
21     #取得开始行和终了行
22     (startLine,endLine)=lineNum.split(":")
23     #“:”号前为空,从0第一行开始
24     if str(startLine.strip())=="":
25         startLine="1"
26 
27     if str(endLine.strip())=="":
28         endLine=str(f_total_lines)
29 
30     if (not startLine.isdigit()) or (not endLine.isdigit()):
31         print('ERROR:":"两侧必须是数字')
32         return
33     elif int(startLine)>int(endLine):
34         print('ERROR:起始行号>终止行号')
35         return
36         
37     if int(startLine)>f_total_lines:
38         print('ERROR:起始行号大于文件最大行号')
39         return
40         
41     #指针回到文件头部
42     f.seek(0,0)
43     index=0
44     for eachLine in f:
45         index+=1
46         if index >=int(startLine) and index<=int(endLine):
47             print(eachLine)
48     f.close()
49 
50     
51 fileName=input("请输入文件名(c:/test.txt):")    
52 lineNum=input("请输入行号(例:10:20):")    
53 file_view(fileName,lineNum)

 

posted @ 2017-03-22 20:38  苏阿  阅读(311)  评论(0编辑  收藏  举报