Python csv文件操作
一、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文件操作的更多相关文章
- [Python Study Notes]csv文件操作
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...
- Python :open文件操作,配合read()使用!
python:open/文件操作 open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) 如何打开文件 handle=open(file_name,a ...
- java csv 文件 操作类
一个CSV文件操作类,功能比较齐全: package tool; import java.io.BufferedReader; import java.io.BufferedWriter; impor ...
- Python 常见文件操作的函数示例(转)
转自:http://www.cnblogs.com/txw1958/archive/2012/03/08/2385540.html # -*-coding:utf8 -*- ''''' Python常 ...
- 孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容
孤荷凌寒自学python第三十五天python的文件操作之针对文件操作的os模块的相关内容 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.打开文件后,要务必记得关闭,所以一般的写法应当 ...
- 孤荷凌寒自学python第三十三天python的文件操作初识
孤荷凌寒自学python第三十三天python的文件操作初识 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天开始自学python的普通 文件操作部分的内容. 一.python的文件打开 ...
- python中文件操作的六种模式及对文件某一行进行修改的方法
一.python中文件操作的六种模式分为:r,w,a,r+,w+,a+ r叫做只读模式,只可以读取,不可以写入 w叫做写入模式,只可以写入,不可以读取 a叫做追加写入模式,只可以在末尾追加内容,不可以 ...
- python中文件操作的其他方法
前面介绍过Python中文件操作的一般方法,包括打开,写入,关闭.本文中介绍下python中关于文件操作的其他比较常用的一些方法. 首先创建一个文件poems: p=open('poems','r', ...
- Python常见文件操作的函数示例
# -*-coding:utf8 -*- ''''' Python常见文件操作示例 os.path 模块中的路径名访问函数 分隔 basename() 去掉目录路径, 返回文件名 dirname() ...
随机推荐
- centos7下yourcompleteme安装
以前装过一回,没成功,现在再来一次 yourcompleteme git https://github.com/ycm-core/YouCompleteMe#installation 检查软件版本 v ...
- Google宣布安全奖励项目(GPSRP)覆盖上亿的 Android 应用程序
自 2010 年推出除虫赏金项目以来,谷歌已经向安全研究人员支付了超过 1500 万美元的奖励.今天,这家科技巨头宣布进一步拓展 Google Play 安全奖励项目(GPSRP)的范围,以覆盖上亿的 ...
- 解决使用还原卡的PC在2个月后要重新加入域的问题
客户端正确操作: 1. 启动注册表编辑器. 要这样做, 请依次单击 开始 . 运行 , 类型 regedit 在 打开, 框, 然后单击 确定 . 2. 找到并单击以下注册表子项: HKEY_LOCA ...
- Day4 - I - Trucking HDU - 2962
A certain local trucking company would like to transport some goods on a cargo truck from one place ...
- 052、Java中使用do…while循环实现1~100的累加
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- NPOI读取excel 空行
if (sheet.GetRow(i) != null) 每行判断一下,避免出错.真是蛋疼.
- delphi10.2 命令行编译x64脚本
Build.bat @echo off @echo delphi x64编译测试 @cd /d %~dp0 @echo 设置Delphi参数信息 @set SourcePath=%~dp0.\src ...
- Json实体类驼峰名称转化器
背景 我们常用一些网站,将json转化成实体类.但不巧的是,这些自动生成的都是小驼峰.需要进一步的改成大驼峰+JsonProperty.接着同事说他已经有个工具了.我稍微简化了一下 方法 首先行分离. ...
- 每天一点点之 uni-app 框架开发 - 页面滚动到指定位置
项目需求:在页面中,不管位于何处,点击评论按钮页面滚动到对应到位置 实现思路如下: uni.createSelectorQuery().select(".comment").bou ...
- POJ 2752:Seek the Name, Seek the Fame
Seek the Name, Seek the Fame Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 13619 Accept ...