|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
原题:用户输入文件名和行数(行数格式如13:21或:21或21:),将内容打印到屏幕上!
- def function(file_name,lines):
- f=open(file_name)
- count=0
- for each_line in f:
- count+=1
- index=lines.index(':')
- front=lines[:index]
- back=lines[index+1:]
- if front and back:
- print '文件%s从第%d行到第%d行的内容如下:'%(file_name,int(front),int(back))
- for i in xrange(int(front)-1,int(back)):
- print f.readline()
- elif not front:
- print '文件%s从开始到第%d行的内容如下:'%(file_name,int(back))
- for i in range(int(back)):
- print f.readline()
- elif not back:
- print '文件%s从第%d行到末尾的内容如下:'%(file_name,int(front))
- for i in range(int(front)-1):
- f.readline()
- print f.read()
- else:
- print '输入有误'
- f.close()
- file_name=input('请输入要打开的文件:')
- lines=input('请输入需要显示的行数【格式如13:21或:21或21:】:')
- function(file_name,lines)
复制代码
执行结果见图片
此外,对readline()函数不太明白,它每次怎么知道读的是哪行呢?读完了就会把读取内容从文件中剔除吗?
def fileConfLine(filename, confline):#定义函数,参数分别代表文件名和需要输入的函数
file = open('C:\\Users\\lenovo\\Desktop\\python\\2018.3.11\\第029课后题\\第2题\\' + filename + '.txt')
all_line = []#定义一行为元素的列表
for temp in file:#把文件的每行赋值给temp
all_line.append(temp)#把每个temp元素添加到all_line列表里,循环结束添加完毕。因为列表方法多,所以用列表来储存
#判断confline字符串的长度,如果长度是3你输入的是n:k模式,如果长度是2,你输入的模式有两种:n或者n:模式
if len(confline) == 3:
list1 = all_line[int(confline[0]) : int(confline[2])]
for line in list1:
print('record.txt从第' + confline[0] + '行到第' + confline[2] + '行的内容如下:' )
print(line)
if len(confline) == 2:
if confline[0] == ':':#输入有两种情况,第一是:n这种模式,这种模式下,符合confline[0] == ':'
list2 = all_line[:(int(confline[1]))]
for line in list2:
print('record.txt从开始到第' + confline[1] + '行的内容如下:' )
print(line)
else:
list3 = all_line[(int(confline[0])):]
for line in list3:
print('record.txt从第' + confline[0] + '行到末尾的内容如下:' )
print(line)
#n = 0
#while confline:
#print(all_line[n])
#n += 1
#confline -= 1
file_name = input('请输入文件名:')
line_num = input('请输入行的数量:') #输入的时候':'是英文模式,而且三种模式的每个字符紧挨着的。不符合以上所述程序不能执行。
fileConfLine(file_name, line_num)
|
-
|