python中csv读写操作_Python文件操作(读写CSV)

本文介绍了Python中文件的基本操作,包括打开、读写及关闭文件的方法,并详细讲解了CSV文件的创建、读取和写入技巧。

一、文件的基本操作

2.1 文件操作步骤

打开文件

读写等操作

关闭文件

注意:可以只打开和关闭文件,不进行任何读写操作

2.1.1 打开

在python,使⽤用open函数,可以打开⼀一个已经存在的文件,或者创建一个新⽂文件,语法如下:

open(name, mode)

name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。

mode:设置打开文件的模式(访问模式):只读、写入、追加等。

2.1.1.1 打开文件模式

image-20200915161357023.png

2.1.1.2 快速体验

f = open('test.txt', 'w')

注意:此时的 f 是 open 函数的⽂文件对象

2.1.2 文件对象方法

2.1.2.1 写

语法

对象对象.write('内容')

体验

# 1. 打开⽂文件

f = open('test.txt', 'w')

# 2.⽂文件写⼊入

f.write('hello world')

# 3. 关闭⽂文件

f.close()

注意:

w 和 a 模式:如果文件不存在则创建该⽂件;如果文件存在, w 模式先清空再写入, a 模式直接末尾追加。

r 模式:如果文件不存在则报错

2.1.2.2 读

read()

⽂文件对象.read(num)

num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。

readlines()

readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。

f = open('test.txt')

content = f.readlines()

# ['hello world\n', 'abcdefg\n', 'aaa\n', 'bbb\n', 'ccc']

print(content)

# 关闭⽂文件

f.close()

readline()

readline()⼀次读取⼀行内容。

f = open('test.txt')

content = f.readline()

print(f'第⼀行:{content}')

content = f.readline()

print(f'第⼆行:{content}')

# 关闭⽂文件

f.close()

image-20200915162820665.png

2.1.2.3 seek()

作⽤:用来移动文件指针。

语法如下:

文件对象.seek(偏移量, 起始位置)

起始位置:

0:文件开头

1:当前位置

2:文件结尾

2.1.3 关闭

文件对象.close()

file对象常用函数

image-20200915183014795.png

open 与 with open

file = open('test.txt','w')

file.write('123')

file.close()

等同于

with open('test.txt','w') as file:

file.write('123')

二、文件读写CSV

什么是CSV?

CSV是一种通用的、相对简单的文件格式,被用户、商业和科学广泛应用。最广泛的应用是在程序之间转移表格数据,而这些程序本身是在不兼容的格式上进行操作的(往往是私有的和/或无规范的格式)。因为大量程序都支持某种CSV变体,至少是作为一种可选择的输入/输出格式。

“CSV”并不是一种单一的、定义明确的格式。因此在实践中,术语“CSV”泛指具有以下特征的任何文件:

1、纯文本,使用某个字符集,比如ASCII、Unicode、EBCDIC或GB2312;由记录组成

2、每条记录被分隔符分隔为字段(典型分隔符有逗号、分号或制表符

3、有时分隔符可以包括可选的空格)

4、每条记录都有同样的字段序列

1.创建一个CSV文件

with open('test.csv','w')as file:

file.write('id,url,name')

file.write('\n')

file.write('1,http://www.baidu.com,baidu')

file.write('\n')

file.write('2,http://taobao.com,taobao')

file.write('\n')

file.write('3,http://jd.com,jd')

image-20200915183721188.png

2.读取CSV文件

#导入模块

import csv

#打开文件,用with打开可以不用去特意关闭file了

with open('test.csv','r')as csvfile:

#读取csv文件,返回的是迭代类型

read=csv.reader(csvfile)

for i in read:

print(i)

3.读取CSV指定行内容

import csv

with open("test.csv","r") as csvfile:

read = csv.reader(csvfile)

for index,value in enumerate(read):

# 比如读取第二行,行数从0开始记,所以第二行 用 index 进行判断

# 或者读取 m~n 行 if (m<=index<=n)

if(index==1):

print(value)

4.写入CSV文件

import csv

# 1.打开文件 as 称它为 变量xxx, 若不存在该文件,则创建

with open('newcsv.csv','w',encoding='utf-8') as newfile:

#存储csv,读取的文件writer

writer=csv.writer(newfile)

#写入一行

writer.writerow(['序号','网址','名称'])

#写入多行

lists=[

[1,'www.baidu.com','百度'],

[2,'www.qq.com','腾讯'],

[3,'www.jingdong.com','京东']

]

writer.writerow(lists)

5.解决写入空行的问题(方法一)

import csv

# 在 open( ) 的参数内加上 newline=''

with open('newcsv.csv','w',encoding='utf-8',newline='')

as newfile:

# 存储csv,读取的文件writer

writer=csv.writer(newfile)

# 写入一行

writer.writerow(['序号','网址','名称'])

# 写入多行

list=[

[1,'www.baidu.com','百度'],

[2,'www.qq.com','腾讯'],

[3,'www.jingdong.com','京东']

]

writer.writerows(lists)

6.解决写入的空行问题(方法二)

import csv

import codecs

with codecs.open('newcsv.csv','w','utf-8') as newfile:

# 存储 csv、读取的文件writer

writer = csv.writer(newfile)

#写入一行

writer.writerow(['序号','网址','名称'])

# 写入多行

lists = [

[1,'www.baidu.com','百度'],

[2,'www.qq.com','腾讯'],

[3,'www.jingodng.com','京东']

]

writer.writerows(lists)

7.追加内容到CSV文件

import csv

# 注意 open( )第二个参数为 'a' 的话,是追加append 的意思

with open('newcsv.csv','a',encoding='utf-8',newline='')as csvfile:

mywriter=csv.writer(csvfile)

mywriter.writerow(['江苏省|淮安市|清江浦区'])

mywriter.writerow(['山东省|青岛市|黄岛区'])

mywriter.writerow(['湖南省|怀化市|鹤城区'])

8.自定义读取CSV文件

csv文件有时候并不是分隔符只是逗号,还有可能是其他符号,那么我们该如何读取其他分隔符的csv文件呢?

现在我们想把前四行正常读取,5-7行的按照省、市、区的列表读取,该如何读取呢

为csv注册一个新的读取规则:

语法:

csv.register_dialect ( '规则名称' , delimiter = '分隔符',quoting = csv.QUOTE_ALL)

注销规则语法: csv.unregister_dialect()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值