无法打印从python文件读取的内容

2024-09-28 03:25:04 发布

您现在位置:Python中文网/ 问答频道 /正文

嗯。所以我写了一个程序,从一个reader对象中读取每一行

with open(r'C:\Users\Jayesh B\Documents\Programming\Python\Practicals\Program5\program5.txt','r') as target:
    lines = target.readlines()
    newfllines = []
    for line in lines:
        if line[0].lower() == 'a':
            newfllines.append(line)
    print(lines)
    a = target.read()
    print(a)

我的文件不是空的,因为打印行提供了输出

['aaditya\n', 'aaaaaaab\n', 'efsgrbdb\n', 'grr\n', 'gegeb\n', 'ee\n', 'adi \n', 'test123\n', 'sb\n', 'fsbr\n', 'bfs\n', 'brsbwb\n', 'wb\n', 'wbwb\n', 'wbe']

但是第二个print语句没有给出任何输出。谁知道我做错了什么? 请注意。。我使用的是python版本:3.8.6

Python 3.8.6 (tags/v3.8.6:db45529, Sep 23 2020, 15:52:53) [MSC v.1927 64 bit (AMD64)] on win32

Tags: 对象程序targetwithlineopenusersdocuments
3条回答
with open(r'program.txt','r') as target:
    lines = target.readlines()
    newfllines = []
    for line in lines:
        if line[0].lower() == 'a':
            newfllines.append(line)
    print(lines)
    target.seek(0)
    a = target.read()
    print(a)
    print(newfllines)

输出

['ciao\n', 'come\n', 'stai\n', 'a\n', 'a\n', 'a']
ciao
come
stai
a
a
a
['a\n', 'a\n', 'a']

一旦到达流的末尾,您需要再次重新读取文件(您不需要关闭文件,因为您正在使用with),并且还需要修复错误的缩进:

with open(r'C:\Users\Jayesh B\Documents\Programming\Python\Practicals\Program5\program5.txt','r') as target:
  lines = target.readlines()
  newfllines = []
  for line in lines:
    if line[0].lower() == 'a':
      newfllines.append(line)
print(lines)
a = open(r'C:\Users\Jayesh B\Documents\Programming\Python\Practicals\Program5\program5.txt','r').read()
print(a)

您还可以使用target.seek(0)再次转到顶部

当您使用target.readlines()方法时,指针穿过整个文件并位于末尾,因此当您调用taeget.read()方法时,由于指针位于文件末尾,因此没有任何内容可读取。您可以通过在target.readlines()之后使用target.seek(0)方法来修复此问题,因为它将重置指针并将其带到文件中的第一个字符。另外,请确保缩进是正确的,所有内容都应该在with代码块中,因为一旦从该代码块中取消缩进,文件就会关闭

相关问题 更多 >

    热门问题