我需要在python中获取一个大文件(数十万行)的行数。内存和时间最有效的方法是什么?
目前,我这样做:
def file_len(fname):
with open(fname) as f:
for i, l in enumerate(f):
pass
return i + 1
有可能做得更好吗?
没有比这更好的了。
毕竟,任何解决方案都必须读取整个文件,找出有多少文件\n
,然后返回该结果。
你是否有一种更好的方法,而无需读取整个文件?不确定…最好的解决方案将永远是受I / O
约束的,你可以做的最好的事情是确保你不使用不必要的内存,但是看起来你已经解决了这一问题。
问题内容: 我想遍历整个文件的每一行。一种方法是读取整个文件,将其保存到列表中,然后遍历感兴趣的行。此方法占用大量内存,因此我正在寻找替代方法。 到目前为止,我的代码: 执行此代码将显示错误消息:。 有什么建议么? 目的是计算成对的字符串相似度,这意味着对于文件中的每一行,我要计算每隔一行的距离。 问题答案: 正确的,完全Python的读取文件的方法如下: 该with语句处理文件的打开和关闭,包括
问题内容: 我使用了hashlib(在Python 2.6 / 3.0中代替了md5),如果我打开一个文件并将其内容放入函数中,它就可以正常工作。 问题在于非常大的文件,其大小可能超过RAM大小。 如何在不将整个文件加载到内存的情况下获取文件的MD5哈希? 问题答案: 将文件拆分为8192字节的块(或128字节的其他倍数),然后使用连续将其送入MD5 。 这利用了MD5具有128字节摘要块(819
问题内容: 我需要在一个很大的文本文件中搜索特定的字符串。它的构建日志包含大约5000行文本。最好的方法是什么?使用正则表达式应该不会引起任何问题吗?我将继续阅读几行,并使用简单的查找。 问题答案: 如果它是“相当大”的文件,请顺序访问各行,而不要将整个文件读入内存:
问题内容: 在史前时代(Python 1.4)中,我们做到了: 在Python 2.1之后,我们做到了: 在Python 2.3中获得便利的迭代器协议之前,它可以做到: 我看过一些使用更详细的示例: 这是首选的方法吗? [edit]我知道with语句可以确保关闭文件…但是为什么文件对象的迭代器协议中没有包含该语句呢? 问题答案: 偏爱以下原因的确有一个原因: 我们都为CPython的相对确定性的引
问题内容: 给定Python中的类C,如何确定该类在哪个文件中定义?我需要可以从类C或从关闭C的实例工作的东西。 我这样做的原因是因为我通常不喜欢将属于同一文件的文件放在同一文件夹中。我想创建一个使用Django模板将其自身呈现为HTML的类。基本实现应根据定义类的文件名来推断模板的文件名。 假设我在文件“ base / artifacts.py”中放置了一个LocationArtifact类,那
问题内容: 似乎是一个新手问题,但事实并非如此。一些通用方法并非在所有情况下都有效: sys.argv [0] 这意味着使用,但是如果你是从另一个目录中的另一个Python脚本运行的,则此方法不起作用,并且这可能在现实生活中发生。 文件 这意味着使用,但是我发现这不起作用: py2exe没有属性,但是有一种解决方法 当你从IDLE运行时,没有属性 我得到的 答案不完整的相关问题: Python-查