当前位置:  开发笔记 > 编程语言 > 正文

在Python中使用CSV文件的"with"语句

如何解决《在Python中使用CSV文件的"with"语句》经验,为你挑选了1个好方法。

是否可以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语句兼容?



1> jfs..:

withstatement 的主要用途是对语句中使用的对象进行异常安全的清理.with确保关闭文件,释放锁定,恢复上下文等.

如果出现异常,csv.reader是否有清理的东西?

我会去:

with open("myfile.csv") as f:
    for row in csv.reader(f):
        # process row

您无需一起提交要使用csv.readerwith声明的补丁.

import contextlib

有关模块contextlib中的函数contextmanager的帮助:

contextmanager(func)
    @contextmanager decorator.

典型用法:

    @contextmanager
    def some_generator():
        
        try:
            yield 
        finally:
            

这使得:

    with some_generator() as :
        

相当于:

    
    try:
         = 
        
    finally:
        

这是我如何使用它的具体示例:curses_screen.


@JFSebastion:我认为所有"数据压缩"和"文件格式"库模块都应该直接支持.
推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有