|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
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)
假设输入为: ,begin =1-1=0, end = -1, lines = -1-0= -1,打印全部
假设输入为:12 ,begin = 1-1 =0, end =12 ,lines = 12 , 打印前12行
假设输入为30: ,begin = 30 -1 =29,end =-1,lines = -1-29=-30, 执行print(f.read())读出全部?
本帖最后由 jackz007 于 2019-4-3 17:07 编辑
具体策略取决于 begin 和 lines,如果 begin > 1 那么,就需要跳过文件开头的 (begin - 1)行内容,如果 lines < 0 那就全文读取并显示其余的文件内容,否则,就计数读取并显示 lines 行后续的文件内容。
- . . . . . .
- begin = int(begin) - 1
- . . . . . .
- for i in range(begin): # 如果 begin > 0 那就循环跳过文件的 begin 行内容
- f . readline() # 读取而不显示
- if lines < 0: # 如果 lines < 0
- print(f.read()) # 不计数读取并显示剩余的全部文件内容
- else: # 否则
- for j in range(lines): # 计数读取文件中后续的 lines 行并显示
- print(f.readline(), end = '') # 计数读取文件中后续的 lines 行并显示
复制代码
|
|