我需要从超过2GB的文件中更新最后一行,这些文件由无法读取的文本行组成readlines()
。目前,它可以通过逐行循环工作。但是,我想知道是否有任何编译的库可以更有效地实现这一目标?谢谢!
myfile = open("large.XML")
for line in myfile:
do_something()
更新:使用ShadowRanger的答案。它更短且更健壮。
对于后代:
读取文件的最后N个字节,然后向后搜索换行符。
#!/usr/bin/env python
with open("test.txt", "wb") as testfile:
testfile.write('\n'.join(["one", "two", "three"]) + '\n')
with open("test.txt", "r+b") as myfile:
# Read the last 1kiB of the file
# we could make this be dynamic, but chances are there's
# a number like 1kiB that'll work 100% of the time for you
myfile.seek(0,2)
filesize = myfile.tell()
blocksize = min(1024, filesize)
myfile.seek(-blocksize, 2)
# search backwards for a newline (excluding very last byte
# in case the file ends with a newline)
index = myfile.read().rindex('\n', 0, blocksize - 1)
# seek to the character just after the newline
myfile.seek(index + 1 - blocksize, 2)
# read in the last line of the file
lastline = myfile.read()
# modify last_line
lastline = "Brand New Line!\n"
# seek back to the start of the last line
myfile.seek(index + 1 - blocksize, 2)
# write out new version of the last line
myfile.write(lastline)
myfile.truncate()
问题内容: 我打算使用Java擦除文本文件中的最后一行;但是,下面的代码将删除所有内容。 问题答案: 如果要从文件中删除最后一行而不创建新文件,则可以执行以下操作: 从倒数第二个字节开始,查找换行符,然后继续向后搜索,直到找到一个。然后在该换行符之后截断该文件。 如果最后一个字符是换行符(即最后一行的末尾),则从第二个最后一个字节而不是最后一个字节开始。
问题内容: 我正在尝试使用node.js检索服务器上文件的最后修改日期。 我试过了 和 两者都以未定义形式返回。 问题答案: 对于节点v 4.0.0及更高版本: 或同步:
问题内容: 我尝试寻找其他答案,但仍不确定正确的方法。我有许多个非常大的.csv文件(每个文件可以是一个千兆字节),我想首先获取它们的列标签,因为它们并不完全相同,然后根据用户的喜好使用某些条件提取其中的一些列。在开始提取部分之前,我做了一个简单的测试,以了解解析此文件的最快方法,这是我的代码: 我的结果是: 因此,似乎大多数人使用的csv库确实比其他人慢很多。也许以后证明当我开始从csv文件中提
问题内容: 我有一个包含大量记录(> 300,000)的表。表格中最相关的字段是: CREATE_DATE MOD_DATE 每次添加或更新记录时,这些记录都会更新。 现在,我需要查询该表以查找上次修改的记录的日期。我目前正在使用 但是我想知道这是否是获得答案的最有效方法。 我尝试添加一个来将日期限制为上个月,但实际上看起来比较慢(并且我需要最新的日期,该日期可能早于上个月)。 我还尝试了我在其他
问题内容: 我正在使用JSch从SFTP服务器获取文件,但是我试图找出一种方法来仅获取最旧的文件,并确保当前未将其写入。我想象自己这样做的方式是,首先找到指定远程文件夹中哪个文件最旧。然后,我将检查文件大小,等待x秒(大约10秒,为了安全起见),然后再次检查。如果文件大小没有更改,我将下载文件并进行处理。但是,我不知道该怎么做!如果有人知道如何执行此操作,或者知道其他支持具有此内置SFTP的功能(
我正在大文本文件中搜索匹配项,但我发现它太慢了。这是文件结构: 我正在尝试匹配第一列的文本,我想提取第二列的值。列之间用\t隔开,大约有1000万行。用不同的单词多次搜索文件。什么搜索方法的时间效率最好? 编辑:文件大小为129 Mb,将被搜索至少数千次。EDIT2:文件是按字母顺序排序的,只有当单词有不同的大写字母时,它们才能出现多次。例如:单词都是不同的条目。