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

Python:没有csv.close()吗?

慕承恩
2023-03-14
问题内容

我正在使用CSV模块读取制表符分隔的文件。代码如下:

z = csv.reader(open('/home/rv/ncbi-blast-2.2.23+/db/output.blast'), delimiter='\t')

但是,当我在脚本末尾添加Z.close()时,我得到了错误并指出“ csv.reader”对象没有属性“ close””

z.close()

那么如何关闭“ Z”呢?


问题答案:

读者实际上只是一个解析器。当您要求它提供一行数据时,它将读取操作委托给基础file对象,并将结果转换为一组字段。因此,无需关闭阅读器。这将是毫无意义的操作。

但是,您应该确保关闭基础file对象。在Python 2.5+中,这是这样做的方法:

with open('/home/rv/ncbi-blast-2.2.23+/db/output.blast') as f:
    z = csv.reader(f, delimiter='\t')

如果您不熟悉该with语句,则基本上将其内容包含在一个try...finally块中,该文件将关闭finally零件中的文件。对于Python
2.5,您需要__future__导入才能启用该with语句。如果您需要保持与2.4之类的Python早期版本的兼容性,则应使用进行关闭try...finally

感谢Jared指出该with声明的兼容性问题。



 类似资料:
  • 问题内容: 我刚刚意识到在JSON对象中添加了空格 例如 如何删除空格以使JSON更紧凑并保存要通过HTTP发送的字节? 如: 问题答案:

  • 问题内容: 我创建了这个简单的GUI: 我启动并运行了UI。当我单击Grab按钮时,在控制台上出现以下错误: 为什么entryBox设置为None? 问题答案: 并且place在功能Entry对象和所有其他部件的回报None。在python中,执行此操作时.,表达式的结果为返回的值,因此。 你应该将其分成两行,如下所示: 这样,你就可以将参考存储在其中,并且可以按照你的期望进行布局。如果你以块的形

  • 问题内容: 我的python脚本未在crontab下运行。 我将其放在顶部的python脚本中: 我尝试这样做: 添加到我的: 我的/ var / log / cron文件说: 但是我的脚本没有运行,因为当我检查sql数据库时,什么都没有改变。如果我像这样直接在终端中运行它: 我得到正确的结果。 这是: 每条评论:是的,存在。我也可以使用just直接运行python脚本。作品。所以我不相信这是原因

  • 问题内容: 我不敢相信这实际上是一个问题,但是我一直在尝试调试此错误,但是却一无所获。我敢肯定我错过了一些非常简单的事情,因为这看起来太愚蠢了。 (与addExperience对应的两个装饰器是因为这是在声明其类的文件外部定义的。) 我得到的错误是: 所以这对我来说没有任何意义,因为我清楚地声明了init函数的第二个参数。任何帮助都是极好的! 这是Experience.mro()-这表示类Expe

  • 我使用pyenv来管理python安装和虚拟环境。我在Mac(Catalina)上安装了几个python。 < li >系统python(usr/bin中的python 2.7) < Li > usr/bin中的python 3.9(来自python.org/downloads中的默认安装程序) < Li > python 3.9 in/opt/anaconda 3/bin/python 3(来自

  • python 有系统内置的包或者函数能做到么?