TXT、JSON、CSV文件的基本读写方法

数据储存

数据储存的格式有很多,最简单的文本格式有TXT,JSON,CSV等。还可以保存到数据库中,如关系型数据库MySQL,非关系型数据库MongoDBRedis等。

文件储存

文件储存其实就是选择储存的格式,如文本型数据有TXT等。

TXT文本储存

TXT格式的使用十分简单,之前也大量使用过了,这里就表示一下。

with open(filename,method,code) as f:
    f.write()
    f.read()

这是两个最基本的操作,这里使用with方法打开图片是一种最安全的方法,因为这样不用单独关闭文件对象,也不会让文件对象一直占用内存。

json文件储存

JSON 全称JavaScript Object Notation,也是JavaScript对象标记,它通过对象和数组的组合来表示数据,构造简洁但是结构化程度 非常高,是一种轻量级的数据交换格式

  1. 对象和数组
    • 对象:
      它在 JavaScript 中是使用花括号{ }包裹起来的内容,数据结构为{ keyl va luel, key2:
      value2 }的键值对结构 在面向对象的语言中, key 为对象的属性, value 为对应的键名可以使用整数 字符串来表示 值的类型可以是任意类型
    • 数组:
      数组在 JavaScript 是方括号[]包裹起来的内容,数据结构为[ “java”, “javascript”,
      "vb”,.. ]的索引结 。在 JavaScript 中, 数组是一种比较特殊的数据类型,它也可以像对象那样使用键值对,但还是索引用得多 同样,值的类型可以是任意类型。
[{ ”name ":“Bob”, “gender”:”male", 
’'birthday””1992-10-18},{ ”name" : "Selina, 
"gender":”female ”, 
"birthday":1995-10-18" 
}]

由中括号包围的就相当于列表类型,列表中的每个元素可以是任意类型,这个示例中它是字典类
型,由大括号包围。

  1. 读取JSON

python为我们提供了简单易用的JSON库来实现JSON文件的读取。可以调用loads()dumps()方法来实现文本和JSON对象的转换

import json
str = '''
[{
    "name":"bob",
    "gneder":"male",
    "bir":""1018"
},{
    "name":"selina",
    "gender":"femal",
    "bir":"1018"
}]
'''
print(type(str))
data = json.loads(str)
print(data)
print(type(data))

所以json可以实现str到对象的转换的,所以之前说json是一种轻量级的数据交换格式,对象标记。
因为它是一种对象标记,以对象为对象储存。

注意:JSON中的数据需要用双引号来包围,用单引号的话loads()会解析错误。

  1. 输出JSON

同样的,dumps()方法的作用基本和laods()相反。
dumps(json_data,indent, ensure_ascii)其中json_data是需要转换的json的某一对象的数据,indent
是转换成的str的缩进字符数,可以让格式更加美观。ensure_ascii是是个bool型参数,用于指定json中的内容是否全是ascii编码。

注意:

  1. 这里的json_data中的数据是可以用单引号来包围的;
  2. 如果json_data中包含中文数据,直接输出会输出中文的unicode字符,这时需要指定ensure_asciiFalse
    然后如果要储存在txt文件中,需要再以utf-8的encoding方式open文件。

CSV文件储存

全称Comma-Separated Values ,中文名交逗号分割值或者字符分割值,文件以纯文本形式储存表格数据

CSV的结构:
CSV文件内容就是一个字符序列,包含了任意多的记录,记录之间有某种换行符分割。
每条记录由多个字段组成,字段之间的分隔符为其他字符或字符串,常见的是逗号和制表符。
每条记录都有完全相同的字段序列(格式、类型),相当于一个结构化的纯文本形式,甚至比Excel更简洁。

  1. 写入
import csv

with open('data.csv','w') as csvfile:
    writer = csv.writer(csvfile, delimiter=',') 
    writer.writerow(['id','name','age']) 
    writer.writerow(['10001','Mike',20])  
    writer.writerow(['10002','Bob',22])
    writer.writerow(['10003','Jordan',21])
    # 这里写入的方式就和txt文件的不一样了,这里获取到csv文件句柄后,还要通过csv.writer()方法初始化写入对象,
    # 传入句柄后,调用写入对象的writerow()方法传入每行的数据即可完成写入。
    # delimiter参数用于指定列与列之间的分割符。

上述代码也可以直接用writer.writerows()方法一次写入多行。

上面的代码是通过列表字段写入数据的,也可以通过字典格式写入数据,但是写入方式又变得不一样了。

import csv

with open('data.csv', 'w') as csvfile:
    fieldnames = ['id', 'name', 'age']
    writer = csv.DictWriter(csvfile,fieldnames=fieldnames)
    writer.writerow({'id':'10001','name':'Mike','age':20})
    writer.writerow({'id':'10002','name':'Mike','age':20})
    

这里需要先定义一个三个字段,后面通过字典加入记录时需要根据这三个字段来选取字典中的内容。

  • 如果需要追加文件内容,则以'a'方式获取文件句柄即可。
  • 如果写入内容里有中文,则在通过open()获取句柄时,需要指定编码格式为encoding=utf-8

注意:
通过列表的方式写入内容的时候需要严格按照第一个记录(也就是表格表头顺序)书写,但是按照字典的形式书写则不需要考虑顺序,会自动对应上。
字典方式写入时,记录中的字段键值必须要在fieldnames中,可以缺少对应的fieldname,但不能超出fieldnames。

  1. 读取
    直接上代码
import csv
with open('data.csv','r',encoding='utf-8') as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
    print(row)

关系型数据库储存

pass

非关系型数据库储存

pass
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值