Python中的文件的读写操作

一、csv文件

CSV是以逗号间隔的文本文件,XLS是电子表格,包含文本、数值、公式和格式。当不需要公式和格式表格可用CSV格式保存。

引入

import csv

写入:
rows = [['张三',10],['李四',22],['王五',18]]

with open('test1.csv','w',newline='')as csv_file:

    writer = csv.writer(csv_file)

    for row in rows:

        writer.writerow(row)

csv是一行一行写入的。

如何解决csv文件的乱码问题。

先将CSV用txt记事本打开,然后选择ANSI编码方式。另存为,点编码这里,这里的编码有这么几种选择ANSI/Unicode/Unicode big endian/UTF-8 2. 选择ANSI,然后保存,再用Excel打开,就不会有乱码了。

读取:

用f文件读取的话,格式是这样的:

with open('test.txt','r')as f:

用csv文件读取,可以和读取文件作比较:

with open('test1.csv','r')as read_file:

    reader = csv.reader(read_file)

    print(reader)

    print([row for row in rows])

字典写入:

data_dic = [
    {
        'name':'zhangsan',
        'age':'15'
    },{
        'name':'lisi',
        'age':'25'
    }
]

with open('dict.csv','w',newline='')as csv_file:

    keys = []

    for key in data_dic[0].keys():
        print(key)
        keys.append(key)
    writer = csv.DictWriter(csv_file,fieldnames=keys)
    writer.writeheader()
    for dict in data_dic:
        writer.writerow(dict)

读取

with open('test2.csv','r')as csv_file:
    reader = csv.DictReader(csv_file)
    print([row for row in reader])

输出结果为:

[OrderedDict([('张三', '李四'), ('10', '22')]), OrderedDict([('张三', '王五'), ('10', '18')])]

二、json文件的写入。

引入:

import json
info = [
    {
        'name':'张三',
        'age':14,
        'fond':'play'
    }
]
with open('info.txt','w')as f:
    # indent 缩进字符个数
    # ensure_ascii =False 将unicode字符转换成中文
    f.write(json.dumps(info,indent=2,ensure_ascii=False))

写入的结果:

 

错误信息:“json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)”

用单引号包裹字符串导致的,改为双引号即可。

三、常用的打开方式:

r:以只读方式打开文件

rb:以二进制方式打开文件

r+:以读写方式打开文件

rb+:以二进制读写方式打开文件

w:以写入方式打开文件,如果文件存在,则将其覆盖。若不存在,则创建。

wb:以二进制写入方式打开文件,如果文件存在,则将其覆盖。若不存在,则创建。

w+:以读写方式打开文件,如果文件存在,则将其覆盖。若不存在,则创建。

a:以追加方式打开文件,如果文件存在,从文件结尾开始写入,如果不存在,则创建新文件来写入。

a+:以读写方式打开文件,如果文件存在,从文件结尾开始写入,如果不存在,则创建新文件来写入。

 

 

 

 

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值