我与python3擦肩而过(二)—— csv文件头哪去啦?
在看Python Data Visualization Cookbook 这本书(基于python2),开始时读取csv文件头的时候出现问题。查了资料,又是python3的问题,从这个链接找到答案。
书中源码是这样的:
import csv filename = 'ch02-data.csv'
data = []
try:
with open(filename) as f:
reader = csv.reader(f)
#注意这里的缩进应该是书的印刷错误
header = reader.next()
data = [row for row in reader]
except:
...略...
开始在python3运行报错如下:
Traceback (most recent call last):
File "F:\Techonolgoy\Python\file\blog\csv_open.py", line 8, in <module>
header = reader.next()
AttributeError: '_csv.reader' object has no attribute 'next'
查资料发现在python3里面,reader已经没有了next属性。python3中用力如下:
import csv
with open('stocks.csv') as f:
f_csv = csv.reader(f)
headers = next(f_csv)
for row in f_csv:
# Process row
...
上文提到过,这里书的缩进在印刷上可能有问题(header和data语句应该在with语句块里面)。我按照原缩进,在python2和3两种环境下测试的时候,报同样的错如下:
Traceback (most recent call last):
File "F:\Techonolgoy\Python\file\blog\csv_open.py", line 8, in <module>
header = next(reader)
ValueError: I/O operation on closed file.
于是,再次修改代码,python3版本完整代码如下(python2只需要将缩进改正即可,直接用下面的代码亦可)
import csv filename = 'ch02-data.csv'
data = []
try:
with open(filename) as f:
reader = csv.reader(f)
header = next(reader)
data = [row for row in reader]
except csv.Error as e:
print("Error reading CSV file at line %s: %s"%(reader.line_num, e)) if header:
print(header)
print("=====================")
for datarow in data:
print(datarow)
成功输出结果:
['day', 'ammount']
=====================
['2013-01-24', '323']
['2013-01-25', '233']
['2013-01-26', '433']
['2013-01-27', '555']
['2013-01-28', '123']
['2013-01-29', '0']
['2013-01-30', '221']
我与python3擦肩而过(二)—— csv文件头哪去啦?的更多相关文章
- PE文件解析器的编写(二)——PE文件头的解析
之前在学习PE文件格式的时候,是通过自己查看各个结构,自己一步步计算各个成员在结构中的偏移,然后在计算出其在文件中的偏移,从而找到各个结构的值,但是在使用C语言编写这个工具的时候,就比这个方便的多,只 ...
- PE文件格式详解,第二讲,NT头文件格式,以及文件头格式
PE文件格式详解,第二讲,NT头文件格式,以及文件头格式 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) PS:本篇博客 ...
- Python处理Excel生成CSV文档
Python是一种解释型的.动态数据类型的.面向对象的高级程序设计语言.拥有丰富的处理数据和文本类库,并且得益于它是一种解释型的语言,在程序修改和功能扩展上,可以很容易做到大规模的调整.综合考虑Pyt ...
- 在Linux 安装Python3.5.6详细文档!!!!
在Linux 安装Python3.5.6详细文档!!!! 1.安装相关依赖库(工具包) yum install gcc patch libffi-devel python-devel zlib-de ...
- 在py文件中设置文件头
在写python文件的时候有时需要记录作者.创建时间等时间,因此可以给python文件设置文件头,这里以PyCharm为例介绍设置步骤: 1. 打开PyCharm,依次点击Setting-----Ed ...
- pycharm新建py文件时,自动补充文件头注释信息
步骤: 1.File -->Settings 2.选择 File and Code Templates -> Files -> Python Script 文件头注释信息代码样式: ...
- python3.6环境部署文档
python3.6环境部署文档 内容 Linux部署Python3.6环境 Mac部署Python3.6环境 Window10部署Python3.6环境 Pycharm安装 1. Linux部署P ...
- 【转】python通过文件头判断文件类型
刚刚看到一个好玩的程序,拉过来.原文地址:https://www.ttlsa.com/python/determine-file-type-by-the-file-header/ 侵权删. ===== ...
- DEX文件解析---1、dex文件头解析
DEX文件解析---1.dex文件头解析 一.dex文件 dex文件是Android平台上可执行文件的一种文件类型.它的文件格式可以下面这张图概括: dex文件头一般固定为0x70个字 ...
随机推荐
- SQL SERVER数据库索引、外键查找
1.索引查找 select a.name as tabname ,h.name as idname,h.type_descfrom sys.objects as a right join sys.in ...
- datagridview 中添加了一个button类型的列,怎么写button的事件
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- hduoj------2594 Simpsons’ Hidden Talents
Simpsons’ Hidden Talents Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java ...
- 5 echo展开
一.(字符)展开 1.echo在标准输出中打印出他的文本 echo this is a test 输出 this is a test 2.输出通配符时,比如*代表匹配文件名的任何字符 echo * 输 ...
- eclipse中SVN分支合并到主干
在项目开发中,需要添加一些新的功能,但是又不想影响到其他开发人员的项目进度,所以决定使用SVN分支进行开发,分支开发完毕后再合并到主干.本文介绍如何在eclipse中合并分支到主干. 1. 要想将分支 ...
- Hadoop集群中添加硬盘
Hadoop工作节点扩展硬盘空间 接到老板任务,Hadoop集群中硬盘空间不够用,要求加一台机器到Hadoop集群,并且每台机器在原有基础上加一块2T硬盘,老板给力啊,哈哈. 这些我把完成这项任务的步 ...
- 回车键Enter
兼容IE与firefox火狐的回车事件(js与jquery) 原生Javascript写法: <script> document.onkeydown=function(event) { e ...
- 用C#用C#实现窗体在规定时间弹出,例如:10:00.弹出后关闭。并在5分钟后再次弹出。5次后停止。最好有具体代码实现窗体在规定时间弹出,例如:10:00.弹出后关闭。并在5分钟后再次弹出。5次后停止。最好有具体代码
run(){ while(true) { show(); if(条件) { ...
- WCF如何通过契约加编码方式调用
WCF采用基于契约的服务调用方法,通过System.ServiceModel.ChannelFactory<TChannel>直接创建服务代理对象. 创建服务代理 public stati ...
- IDEA调试javaScript
谈起JavaScript调试,大家可能想到的就是FireFox下的FireBug,这毫无疑问,FireBug基本已经成为JavaScript开发人员的必备工具.在本文中,将向大家介绍如 ...