gpt4 book ai didi

python - 提取很长的txt文件的最后一行

转载 作者:行者123 更新时间:2023-12-01 04:32:46 25 4
gpt4 key购买 nike

我有一个包含数据的非常长的文件(“text.txt”)和一个仅包含 1 行(即 text.txt 的最后一行)的文件。这一行应该每 10 分钟覆盖一次(通过简单的 chronjob 完成),因为 text.txt 每 10 分钟就会收到另一行。

因此,根据我在 stackoverflow 上找到的其他代码片段,我当前运行此代码:

#!/usr/bin/env python

import os, sys

file = open(sys.argv[1], "r+")

#Move the pointer (similar to a cursor in a text editor) to the end of the file.
file.seek(0, os.SEEK_END)

#This code means the following code skips the very last character in the file -
#i.e. in the case the last line is null we delete the last line
#and the penultimate one
pos = file.tell() - 1

#Read each character in the file one at a time from the penultimate
#character going backwards, searching for a newline character
#If we find a new line, exit the search
while pos > 0 and file.read(1) != "\n":
pos -= 1
file.seek(pos, os.SEEK_SET)

#So long as we're not at the start of the file, delete all the characters ahead of this position
if pos > 0:
file.seek(pos, os.SEEK_SET)
w = open("new.txt",'w')
file.writelines(pos)
w.close()

file.close()

使用此代码我收到错误:

TypeError: writelines() requires an iterable argument

(当然)。当使用 file.truncate() 时,我可以删除原始文件中的最后一行;但我想将其保留在那里,并将最后一行提取到 new.txt 中。但我不明白在使用 file.seek 时这是如何工作的。所以我需要代码最后一部分的帮助。

file.readlines()lines[:-1] 无法正确处理如此大的文件。

最佳答案

不知道为什么要打开 w,只是为了关闭它而不对其进行任何操作。如果您希望 new.txt 包含 file 中从 pos 开始到末尾结束的所有文本,可以:

if pos > 0:
file.seek(pos, os.SEEK_SET)
w = open("new.txt",'w')
w.write(file.read())
w.close()

关于python - 提取很长的txt文件的最后一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32144723/

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