一、open文件打开和with open as 文件打开的区别

 file= open("test.txt","r")
try:
for line in file.readlines():
print(line)
except:
print("error")
finally:
file.close()
 with open("test.txt","r") as file:
for line in file.readlines():
print(line)

用with语句的好处,就是到达语句末尾时,会自动关闭文件,即便出现异常。

with语句实际上是一个非常通用的结构,允许你使用所谓的上下文管理器。上下文管理器是支持两个方法的对象:__enter__和__exit__。

方法__enter__不接受任何参数,在进入with语句时被调用,其返回值被赋给关键字as后面的变量。

方法__exit__接受三个参数:异常类型、异常对象和异常跟踪。它在离开方法时被调用(通过前述参数将引发的异常提供给它)。如果__exit__返回False,将抑制所有的异常。

文件也可用作上下文管理器。它们的方法__enter__返回文件对象本身,而方法__exit__关闭文件

with语句作用效果相当于上面的try-except-finally

二、csv文件的读取

 with open('test.csv', 'r') as csv_file:
reader = csv.reader(csv_file)
#print(list(reader))
for item in reader: #按行读取
print (item)
>>> list(reader)---> [['name','age'], ['Bob','14'], ['Tom','23'], ...]
>>> item -->
['name','age']
['Bob','14']
['Tom','23']
...

  

三、csv文件的写入

 import csv
header = ['name','age']
data = [
['Bob',14],
['Tom',23],
['Jerry',18]
]
with open('test.csv', 'w', newline='')as csv_file:
csv_writer = csv.writer(csv_file)
csv_writer.writerow(header)
# csv_writer.writerows(data) # 写入多行
for row in data:
csv_writer.writerow(row) # 单行写入
指定newline='',则可以避免每写入一行就写入一空行。

四、DictReader和DictWriter操作csv

使用DictReader可以像操作字典那样获取数据,把表的第一行(一般是标头)作为key。可访问每一行中那个某个key对应的数据。

 with open('test.csv', 'r')as csv_file:
dict_reader = csv.DictReader(csv_file)
name_list = [row['name'] for row in dict_reader]
print(name_list)
print(len(list(dict_reader)))
>>> ['Bob', 'Tom', 'Jerry']
>>> 0
dict_reader只能迭代一次
 header = ['name', 'age']
data = [
{'name': 'Bob', 'age': 14},
{'name': 'Tom', 'age': 23},
{'name': 'Jerry', 'age': 18}
]
with open('test.csv', 'w', newline='')as csv_file:
dict_writer = csv.DictWriter(csv_file, header)
dict_writer.writeheader()
dict_writer.writerows(data) # 写入多行
for row in data:
dict_writer.writerow(row) # 单行写入
												

Python csv文件操作的更多相关文章

  1. [Python Study Notes]csv文件操作

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

  2. Python :open文件操作,配合read()使用!

    python:open/文件操作 open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) 如何打开文件 handle=open(file_name,a ...

  3. java csv 文件 操作类

    一个CSV文件操作类,功能比较齐全: package tool; import java.io.BufferedReader; import java.io.BufferedWriter; impor ...

  4. Python 常见文件操作的函数示例(转)

    转自:http://www.cnblogs.com/txw1958/archive/2012/03/08/2385540.html # -*-coding:utf8 -*- ''''' Python常 ...

  5. 孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容

     孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.打开文件后,要务必记得关闭,所以一般的写法应当 ...

  6. 孤荷凌寒自学python第三十三天python的文件操作初识

     孤荷凌寒自学python第三十三天python的文件操作初识 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天开始自学python的普通 文件操作部分的内容. 一.python的文件打开 ...

  7. python中文件操作的六种模式及对文件某一行进行修改的方法

    一.python中文件操作的六种模式分为:r,w,a,r+,w+,a+ r叫做只读模式,只可以读取,不可以写入 w叫做写入模式,只可以写入,不可以读取 a叫做追加写入模式,只可以在末尾追加内容,不可以 ...

  8. python中文件操作的其他方法

    前面介绍过Python中文件操作的一般方法,包括打开,写入,关闭.本文中介绍下python中关于文件操作的其他比较常用的一些方法. 首先创建一个文件poems: p=open('poems','r', ...

  9. Python常见文件操作的函数示例

    # -*-coding:utf8 -*- ''''' Python常见文件操作示例 os.path 模块中的路径名访问函数 分隔 basename() 去掉目录路径, 返回文件名 dirname() ...

随机推荐

  1. 【转】Windows中使用TortoiseGit提交项目到GitLab配置

    转  原文地址 https://www.cnblogs.com/xiangwengao/p/4134492.html   下文来给各位介绍Windows中使用TortoiseGit提交项目到GitLa ...

  2. 在html中创建自定义标签

    创建并使用自定义标签 Web Components 标准非常重要的一个特性是,它使开发者能够将HTML页面的功能封装为 custom elements(自定义标签),本篇介绍使用 CustomElem ...

  3. R 《回归分析与线性统计模型》page164 单变量、多变量多项式模型

    --多项式回归模型 --单变量多项式模型 --多变量多项式模型 rm(list = ls()) library(openxlsx) library(leaps) #单变量多项式模型# data = r ...

  4. 021、Java中汉子与数字的相互转换,利用字符变量保存中文

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  5. JuJu团队11月30号工作汇报

    JuJu团队11月30号工作汇报 JuJu   Scrum 团队成员 今日工作 剩余任务 困难 于达  提供类似generator的数据产生接口  改进代码  对julia不够熟悉 婷婷  和队友一起 ...

  6. 《从Lucene到Elasticsearch全文检索实战》的P184页

    curl -XPOST "http://localhost:9200/_bulk?pretty" --data-binary @books.json 这句话在书中是以crul的命令 ...

  7. postgres http fdw + plv8 处理数据

    原理很简单就是就有http fdw 获取数据,然后结合plv8 处理json 数据 环境准备 docker-compose 文件 version: "3" services:  p ...

  8. 侯捷C++学习(二)

    #include <iostream>using namespace std;class complex{ public: complex (double r= 0, double i = ...

  9. node - 获取 token

     String(req.headers.authorization || '').split(' ').pop() 

  10. pwntool基础和ida常用操作

    pwntools:http://www.91ri.org/14382.html ida:https://www.jianshu.com/p/d425140c6561