gpt4 book ai didi

python - 你能用 open(fname, 'a+' ) 从文件中读取第一行吗?

转载 作者:太空狗 更新时间:2023-10-30 02:27:58 25 4
gpt4 key购买 nike

我希望能够打开一个文件,在末尾附加一些文本,然后只读取第一行。我确切地知道文件的第一行有多长,而且文件足够大,我不想一次将它读入内存。我试过使用:

with open('./output files/log.txt', 'a+') as f:

f.write('This is example text')

content = f.readline()
print(content)

但是打印语句是空白的。当我尝试使用 open('./output files/log.txt')open('./output files/log.txt', 'r+')open('./output files/log.txt', 'a+') 这行得通,所以我知道它与 'a+ 参数有关。我的问题是我必须附加到文件。如何在不使用类似

的情况下附加到文件并仍然获得第一行
with open('./output files/log.txt', 'a+') as f_1:

f.write('This is example text')

with open('./output files/log.txt') as f_2:
content = f_2.readline()
print(content)

最佳答案

当您打开带有附加标志 a 的文件时,它会将文件描述符的指针移动到文件末尾,以便 write 调用将添加到文件的结尾。

readline() 函数从文件的当前指针开始读取,直到它读取的下一个'\n' 字符。所以当你用 append 打开一个文件,然后调用 readline 时,它会尝试从文件末尾开始读取一行。这就是为什么您的 print 调用变成空白的原因。

您可以使用 tell() 函数查看 file 对象当前指向的位置,从而了解实际情况。

要阅读第一行,您必须确保文件的指针回到文件的开头,您可以使用 seek 来做到这一点。功能。 寻找 takes two arguments : offsetfrom_what。如果省略第二个参数,则 offset 从文件的开头获取。所以要跳转到文件的开头,请执行:seek(0)

如果你想跳回文件末尾,你可以包含from_what选项。 from_what=2 表示从文件末尾开始偏移。所以要跳到最后:seek(0, 2)


以附加模式打开文件指针时的演示:

使用如下所示的文本文件的示例:

the first line of the file
and the last line

代码:

with open('example.txt', 'a+') as fd:
print fd.tell() # at end of file
fd.write('example line\n')
print fd.tell() # at new end of the file after writing

# jump to the beginning of the file:
fd.seek(0)
print fd.readline()

# jump back to the end of the file
fd.seek(0, 2)
fd.write('went back to the end')

控制台输出:

45
57
the first line of the file

example.txt 的新内容:

the first line of the file
and the last line
example line
went back to the end


编辑:添加跳回文件末尾

关于python - 你能用 open(fname, 'a+' ) 从文件中读取第一行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38514177/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com