Python学习之旅-10-文件储存:txt文件、csv文件、json文件

1.存储数据txt文件。

1.1 实例:

# 1 存储 txt 文件

data = '''我是一个txt文件'''
# 存储的文件名:file='test.txt'
# 文件打开方式:mode='a'
# 编码格式:encoding='UTF-8'
with open(file='test.txt',mode='a',encoding='UTF-8') as f :
    f.write(data)       # 保存内容
    f.close()           # 关闭文件

1.2 打开文件的不同模式:

模式 描述
r r,以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb rb,以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+ r+,打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ rb+,以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w w,打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb wb ,以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+ w+, 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+ wb+,以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a a,打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ a+,打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ ab+,以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

2.存储csv文件

2.1 实例一:存储一行文件

import csv  # 导入csv模块

# 实例一:存储一行文件

info_1 = ['name', 'age', 'sex']
info_2 = ['老王', '30', '男']

# 存储的文件名:'test_info.csv'
# 文件打开方式:'a'
# 编码格式:encoding='ANSI',设置编码格式为ANSI可以避免Excel软件打开出现乱码的情况。
# newline='' ,如果不设置该参数,相邻两行之间会出现一行空格。
with open('test_info.csv', 'a', encoding='ANSI', newline='')as f:
    writer = csv.writer(f)  # 调用csv库的 writer()方法初始化写入对象
    writer.writerow(info_1)  # 保存第一行数据
    writer.writerow(info_2)  # 保存第二行数据

输出内容:

name age sex
老王 30

2.2 实例二:存储字典形式的数据

import csv  # 导入csv模块

# 实例二:存储字典形式的数据

info = {
    'name': '老王',
    'age': '30',
    'sex': '男',}

with open('test_info_2.csv','a',encoding='ANSI',newline='') as f:
    fieldnames = ['name', 'age', 'sex']                 # 设置文件的头部
    writer = csv.DictWriter(f,fieldnames=fieldnames)    # 使用DictWriter()方法初始化写入对象
    writer.writeheader()                                # 首先写入文件的头部
    writer.writerow(info)                               # 存储文件主要内容

2.3 实例三:存储多个字典形式的数据

import csv  # 导入csv模块

# 实例三:存储多个字典形式的数据

info =[ {'name': '老王','age': '30','sex': '男',},
        {'name': '老大','age': '1','sex': '男',},
        {'name': '老2', 'age': '2', 'sex': '女' },
        {'name': '老3', 'age': '3', 'sex': '男' }]

with open('test_info_2.csv','a',encoding='ANSI',newline='') as f:
    fieldnames = ['name', 'age', 'sex']                 # 设置文件的头部
    writer = csv.DictWriter(f,fieldnames=fieldnames)    # 使用DictWriter()方法初始化写入对象
    writer.writeheader()                                # 首先写入文件的头部
    writer.writerows(info)                               # 存储文件主要内容
    
    # 注意:最后存储主要文件处使用的是:writerows() 方法,比储存单个文件多了一个s。

输出内容:

name age sex
老王 30
老大 1
老2 2
老3 3

3.存储JSON文件

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

3.1 Json 文件的转换操作:

  • loads() 方法将 Json 文本字符串转为 Json 对象。
  • dumps()方法将 Json 对象转为文本字符串。

实例:

import json  # 导入json模块

info = '''[
        {"name": "老王","age": "30","sex": "男"},
        {"name": "老大","age": "1","sex": "男"}
        ]'''

print(type(info))  # 先打印看看info的类型
# 输出内容:<class 'str'>

# 1. 把字符串转化为 json文件

info_1 = json.loads(info)  # 把字符串转换为json文件
print(type(info_1))  # 打印新文件info_1的类型
print(info_1)  # 打印info_1
# 输出内容:<class 'list'>
# 输出内容:[{'name': '老王', 'age': '30', 'sex': '男'}, {'name': '老大', 'age': '1', 'sex': '男'}]


# 2. 把json文件转化为字符串

info_2 = json.dumps(info_1)  # 把字符串转换为json文件
print(type(info_2))  # 打印新文件info_2的类型
# 输出内容:<class 'str'>

3.2 保存和读取json文件

import json  # 导入json模块

info = '''[
        {"name": "老王","age": "30","sex": "男"},
        {"name": "老大","age": "1","sex": "男"}
        ]'''

# 1.输出为json文件
with open('test_json.json','w') as f:
    f.write(json.dumps(info))       #利用dumps()方法把json对象转为字符串,然后使用write()方法写入文件

# 2. 读取json文件
with open('test_json.json','r') as f:
    str = f.read()
    data = json.loads(str)          #利用loads()方法把字符串转化,然后打印出来
    print(data)

注意: Json 的字符串数据表示需要使用双引号,不能使用单引号,否则loads()方法会解析失败。

猜你喜欢

转载自www.cnblogs.com/jasontang369/p/9245935.html