|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
文件打印任意行数
- from pathlib import Path
- p = Path(input("请输入要打开的文件:"))
- f = open(p,'r',encoding='utf-8')
- lines = input("请输入需要显示的行数【格式如 13:21 或 :21 或 21:】:")
- #起始位置&结束位置
- if lines == ':':
- start = 0
- end = f.read().count('\n') + 1
- print(f"文件{p}全文的内容如下:")
- elif lines.startswith(':'):
- start = 0
- end = int(lines[1:])
- print(f"文件{p}从开始到第{end}行的内容如下:")
- elif lines.endswith(':'):
- start = int(lines[:-2])
- end = f.read().count('\n') + 1
- print(f"文件{p}从第{start}行到末尾的内容如下:")
- else:
- _ = lines.find(':')
- start = int(lines[:_])
- end = int(lines[_:])
- print(f"文件{p}从第{start}行到第{end}行的内容如下:")
- #打印相应行数
- count = 0
- while count <= f.read().count('\n') + 1:
- count += 1
- x = f.readline()
- if count in range(start,end+1):
- print(x)
- f.close()
复制代码
为什么打印出来的是几个空行...?
你第一次调用 .read() 就会将文件指针移动到文件末尾
后续 在 .read() 或者 .readline() 时,因为文件指针在文件末尾那么你将读取不到任何文件内容
可以使用 .seek() 将文件指针设置为文件开始部分,参考代码:
- from pathlib import Path
- p = Path(input("请输入要打开的文件:"))
- f = open(p,'r',encoding='utf-8')
- lines = input("请输入需要显示的行数【格式如 13:21 或 :21 或 21:】:")
- text = f.read()
- #起始位置&结束位置
- if lines == ':':
- start = 0
- end = text.count('\n') + 1
- print(f"文件{p}全文的内容如下:")
- elif lines.startswith(':'):
- start = 0
- end = int(lines[1:])
- print(f"文件{p}从开始到第{end}行的内容如下:")
- elif lines.endswith(':'):
- start = int(lines[:-2])
- end = text.count('\n') + 1
- print(f"文件{p}从第{start}行到末尾的内容如下:")
- else:
- _ = lines.find(':')
- start = int(lines[:_])
- end = int(lines[_:])
- print(f"文件{p}从第{start}行到第{end}行的内容如下:")
- #打印相应行数
- count = 0
- f.seek(0)
- while count <= text.count('\n') + 1:
- count += 1
- x = f.readline()
- if count in range(start,end+1):
- print(x)
- f.close()
复制代码
|
|