当前位置: 首页 > 面试题库 >

尝试使用seek()获取CSV文件的最后一行时发生AttributeError

赵灼光
2023-03-14
问题内容

我正在尝试从csv文件返回最后一行。我正在修改我先前编写的另一个函数,该函数从文本文件返回最后一行。起初它似乎按预期工作,但是现在当我调用该函数时会引发错误。

reader.seek(0, os.SEEK_END)



AttributeError: '_csv.reader' object has no attribute 'seek'
import os
import csv
def getLastFile(filename):
    distance = 1024
    with open(filename,'rb') as f:
        reader = csv.reader(f)
        reader.seek(0, os.SEEK_END)
        if reader.tell() < distance:
            reader.seek(0, os.SEEK_SET)
            lines = reader.readlines()
            lastline = lines[-1]
        else:
            reader.seek(-1 * distance, os.SEEK_END)
            lines = reader.readlines()
            lastline = lines[-1]

    return lastline

有人可以帮我修改我的代码吗?我非常确定您可以通过这种方式使用搜索,也许我错了?


问题答案:

这是已接受问题的答案中核心概念的一些细微变化,让csv.reader告诉它何时在最后一行上应用于问题的变化。由于每一行的长度可能不同,因此实际上不必读取整个文件。

import csv

def get_last_row(csv_filename):
    with open(csv_filename, 'r') as f:
        lastrow = None
        for lastrow in csv.reader(f): pass
        return lastrow

更新资料

这是使用进行操作的更简单且可能更快的方法collections.deque。我是从以下问题的答案之一得到这个想法的:如何读取包含生成的整数列表的输出行。

from collections import deque
import csv

def get_last_row(csv_filename):
    with open(csv_filename, 'r') as f:
        try:
            lastrow = deque(csv.reader(f), 1)[0]
        except IndexError:  # empty file
            lastrow = None
        return lastrow


 类似资料:
  • 我有一个csv文件,它一直增长到大约48M行。 在向它添加新行之前,我需要阅读最后一行。 我尝试了下面的代码,但它太慢了,我需要一个更快的替代方案:

  • 我正在尝试使用文件提供商共享存储在我的应用程序内部存储器的原始文件夹中的MP3文件,并允许用户使用他们选择的音频收听应用程序打开共享的MP3文件。 然而,在我编写的代码中,当我尝试使用附加的内容URI作为数据执行意图时,会出现FileNotFoundException。这会导致FileProvider系统的所有其他方面出现故障。 我创建了一个MediaPlayer,让它毫无问题地打开了我想要共享的

  • 我正在使用Context.SendorderedBroadcast方法发送广播,并在到达ResultReceiver之前检查是否有人收到了广播。 下面是一段代码: 到目前为止,我只在搭载Android 2.1版本的摩托罗拉Defy手机上遇到过这种情况,但它也可能发生在其他手机上。 我在网上找不到任何关于它的参考资料,有人知道为什么会这样吗?谢谢!

  • 在java手册中,建议在使用lock()和unlock()时使用try-finally,但是当try块中从未引发异常时,这也是必要的?例如:

  • 问题内容: 由于某种原因,每次尝试使用Tomcat上的java webapp写入计算机上的文件夹时,我都会不断获取信息。此文件夹的权限设置为对我的计算机(Windows)上的每个人都完全控制。有人知道我为什么会得到这个例外吗? 这是我的代码: 这是错误: 异常:java.nio.file.AccessDeniedException:C:\ safesite_documents \ site1 ja

  • 当我试图通过控制台通过jar文件运行应用程序时,在登录事件期间,它会给出一个异常“java.lang.NullPointerException:Location is required”。但当我使用intellij IDE运行应用程序时,它工作得很好。 它给出了行的例外情况: 我也尝试给出fxml文件的绝对路径。它只在我使用jar文件运行应用程序时发生。jar中也没有文件丢失。这可能是什么原因造成