是否可以直接使用with语句与CSV文件?能够做这样的事情似乎很自然:
import csv with csv.reader(open("myfile.csv")) as reader: # do things with reader
但是csv.reader不提供__enter__和__exit__方法,所以这不行.但是我可以分两步做:
import csv with open("myfile.csv") as f: reader = csv.reader(f) # do things with reader
这是第二种方式吗?为什么他们不会使csv.reader与with语句直接兼容?
with语句的主要用法是对语句中使用的对象进行异常安全的清除.确保文件已关闭,锁定已释放,上下文恢复等.
Python .org/library/csv.html#csv.reader” rel=”noreferrer”>csv.reader是否有异常清理的东西?
我会一起去:
with open("myfile.csv") as f: for row in csv.reader(f): # process row
您不需要将修补程序提交到一起使用csv.reader和语句.
import contextlib
模块 contextlib 中功能上下文管理器的帮助:
contextmanager(func) @contextmanager decorator.
典型用法:
@contextmanager def some_generator(<arguments>): <setup> try: yield <value> finally: <cleanup>
这使得:
with some_generator(<arguments>) as <variable>: <body>
相当于:
<setup> try: <variable> = <value> <body> finally: <cleanup>
以下是我如何使用它的具体示例: curses_screen .
总结
以上所述是小编给大家介绍的Python中的CSV文件使用"with"语句的方式详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
本文向大家介绍Python 的 with 语句详解,包括了Python 的 with 语句详解的使用技巧和注意事项,需要的朋友参考一下 一、简介 with是从Python 2.5 引入的一个新的语法,更准确的说,是一种上下文的管理协议,用于简化try…except…finally的处理流程。with通过__enter__方法初始化,然后在__exit__中做善后以及处理异常。对于一些需要预先设置,
本文向大家介绍理解Python中的With语句,包括了理解Python中的With语句的使用技巧和注意事项,需要的朋友参考一下 With语句是什么? 有一些任务,可能事先需要设置,事后做清理工作。对于这种场景,Python的with语句提供了一种非常方便的处理方式。一个很好的例子是文件处理,你需要获取一个文件句柄,从文件中读取数据,然后关闭文件句柄。 如果不用with语句,代码如下: 这里有两个问
问题内容: 我正在研究如何在Python中进行文件输入和输出。我编写了以下代码,以将文件列表中的名称列表(每行一个)读入另一个文件中,同时对照文件中的名称检查名称并将文本附加到文件中的出现位置。该代码有效。可以做得更好吗? 我想对输入和输出文件都使用该语句,但看不到它们如何位于同一块中,这意味着我需要将名称存储在一个临时位置。 问题答案: Python允许将多个语句放在一个语句中。你用逗号分隔。你
问题内容: 我试图了解这些之间是否存在差异,以及该差异可能是什么。 选项一: 选项二: 我知道,对于选项一,with块之后处于闭合状态。 问题答案: 我不知道为什么没有人提到这一点,因为这是工作方式的基础。与Python中的许多语言功能一样,在后台调用特殊方法,这些方法已经为内置Python对象定义,并且可以由用户定义的类覆盖。在特定情况下(和上下文管理器),方法是和。 请记住,在Python中,
本文向大家介绍Python中的上下文管理器和with语句的使用,包括了Python中的上下文管理器和with语句的使用的使用技巧和注意事项,需要的朋友参考一下 Python2.5之后引入了上下文管理器(context manager),算是Python的黑魔法之一,它用于规定某个对象的使用范围。本文是针对于该功能的思考总结。 为什么需要上下文管理器? 首先,需要思索下为什么需要引入上下文管理器。
问题内容: 我喜欢Python 2.7中多上下文语句的便利性: 但是,我需要保持与2.6的兼容性。 是通过引入到2.5的,但是在文档中找不到关于多上下文版本被反向移植到2.6的任何信息。 有什么我想念的吗? 编辑:我知道可以嵌套语句。我在问是否可以使用多个with语句。 问题答案: 如果没有向后兼容的等效方法,我将使多上下文语句成为一组单上下文嵌套语句来处理。 编辑以解决您的修改: 如果您坚持不嵌