python保存数据,利用文本文件(txt)、json、csv保存数据 ...

打印 上一主题 下一主题

主题 1780|帖子 1780|积分 5340

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
介绍

Python提供了多种保存数据的方式,包括文本文件(txt)、JSON文件和CSV文件。这几种是最简单的保存方式,但也很实用。
Python打开文件(保存文件的条件)

python打开文件有几种方式:


  • 内置的open函数
  • os模块的os.open函数
  • io模块的io.open函数
  • pathlib模块的Path类的open
……另有一些第三方库,这里是面向初学者的教程,不做介绍
一样平常利用内置的open函数就足够了
内置open()函数用法

open函数是Python的内置函数,用于打开一个文件,并返回一个文件对象。当你利用open打开文件后,你需要在完成操纵后,利用file.close()方法手动关闭文件。它的根本语法如下:
  1. open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
复制代码
参数说明:


  • file:必须,文件路径(字符串)大概是一个包含文件名和路径的pathlib.Path对象。
  • mode:可选,文件打开模式,默以为'r'。常见的模式有:

    • 'r':只读模式(默认)。
    • 'w':写入模式,假如文件存在则清空,不存在则创建。
    • 'a':追加模式,假如文件存在,新的内容将被写入到已有内容之后,假如文件不存在,创建新文件进行写入。
    • 'b':二进制模式。
    • '+':读写模式(可添加到其他模式中利用)。

  • buffering:设置缓冲策略。
  • encoding:文件的编码格式。
  • errors:报错级别。
  • newline:区分换行符。
一个简单的例子

  1. # 打开file.txt文件,如果文件不存在则创建文件,如果文件存在则清空文件内容
  2. # 以utf-8编码格式写入文件
  3. file = open("file.txt", "w", encoding="utf-8")
  4. # 写入内容:Hello World
  5. file.write("Hello World")
  6. # 关闭文件
  7. file.close()
复制代码
利用with open()

 with open:这是一种上下文管理协议(Context Management Protocol),它可以自动管理资源,无论在处理文件过程中是否发生异常,都能包管with语句实验完毕后已经关闭了打开的文件句柄。推荐利用!
  1. with open("file.txt", "r", encoding="utf-8") as file:
  2.     # 读取文件内容
  3.     content = file.read()
  4.     # 打印文件内容
  5.     print(content)
复制代码
利用文本文件(txt)保存数据

文本文件(txt):这是最简单的数据保存方式,可以保存任何字符串数据。但是,文本文件不具有布局,不适合保存复杂的数据布局,如列表或字典。
  1. with open('file.txt', 'w') as f:
  2.     f.write('Hello, World!')
复制代码
读取数据也很简单:
  1. # 读取数据
  2. text = ""  # 用于存储文件中的内容
  3. with open("file.txt", "r") as f:
  4.     text = f.read()  # 读取文件中的所有内容
  5. print(text)  # Hello, World!
复制代码
利用JSON保存数据

JSON文件:JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它使得人们很容易地读写数据。JSON对于保存复杂的数据布局,如列表或字典,非常有效。
  1. import json  # 导入json模块,内置模块,无需安装
  2. # 需要保存的数据
  3. dict = {
  4.     "name": "张三",
  5.     "age": 18,
  6. }
  7. list = [1, 2, 3, 4, 5]
  8. with open("dict.json", "w") as f:
  9.     # dict: 需要写入的数据
  10.     # f: 文件对象
  11.     # ensure_ascii=False: 不使用ASCII编码,即支持中文
  12.     # indent=4: 缩进4个空格,美化输出
  13.     json.dump(dict, f, ensure_ascii=False, indent=4)  # 将dict写入文
  14. with open("list.json", "w") as f:
  15.     json.dump(list, f)  # 将list写入文件
复制代码
json.dump是Python的json模块中的一个函数,它用于将Python对象编码成JSON格式并写入到文件中。
  1. json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
复制代码
 它的根本语法如下(具体访问json --- JSON 编码和解码器 — Python 3.12.3 文档):


  • obj:要编码为JSON的Python对象。
  • fp:一个.write()-supporting file-like object(支持.write()方法的类文件对象)。
  • skipkeys:默认值是False,假如dict的keys内的数据不是根本范例(str, unicode, int, long, float, bool, None),设置为False时,就会报TypeError的错误。假如设置为True,这类key-value pair会被忽略。
  • ensure_ascii:默认值是True,假如obj中含有non-ASCII的字符,那么这些字符会被如何处理。假如ensure_ascii为True,这些字符会被转义为\uXXXX的序列;假如ensure_ascii为False,这些字符会被输出。
  • check_circular:默认值是True,假如检测到循环引用(circular reference),即在待序列化的dict和list中存在相互引用的环境,那么会抛出OverflowError的错误。假如check_circular为False,如许的错误就会被忽略。
  • allow_nan:默认值是True,假如dict内含有NaN、Infinity和-Infinity,假如设置为True,它们会被序列化成相应的值;假如设置为False,会抛出ValueError的错误。
  • indent:应该是一个非负的整数大概字符串,假如是非负整数,那么JSON array元素和object成员会被美化输出,前面会增长indent个空格;假如是字符串(好比'\t'),那么元素和成员会被这个字符串缩进。
  • separators:用来指定分隔符,实际上是一个元组,第一个元素用来分隔dict中的items,第二个元素用来分隔array中的items。默认是(', ', ': '),假如想输出最紧凑的JSON字符串,可以指定为(',', ':')。
  • default:一个函数,它应该返回一个可序列化的版本的其被传入的参数,否则将抛出TypeError。
  • sort_keys:假如指定为True,那么输出的JSON字符串的key将会按照字母次序排序后输出。
读取数据:
  1. # 读取数据
  2. with open("dict.json", "r") as f:
  3.     dict = json.load(f)  # 读取文件中的数据
  4.     print(dict)
  5. with open("list.json", "r") as f:
  6.     list = json.load(f)  # 读取文件中的数据
  7.     print(list)
复制代码
利用CSV储存数据

CSV文件:CSV(Comma-Separated Values)是一种常见的数据存储格式,它将每行数据分割成多个字段,通过逗号分隔。CSV文件可以被大多数的电子表格软件,如Microsoft Excel和Google Sheets,直接打开。
  1. import csv  # 导入csv模块,内置模块,无需安装
  2. title = ["Name", "Age"]  # 表头
  3. data = [["John", "30"], ["Jane", "25"], ["Tom", "22"]]  # 数据
  4. with open("data.csv", "w", newline="") as f:
  5.     writer = csv.writer(f)  # 创建一个csv写入对象
  6.     writer.writerow(title)  # 写入表头,witerow只能写入一行
  7.     writer.writerows(data)  # 将data写入文件,writerows可以写入多行
复制代码
读取数据:
  1. # 读取数据
  2. with open("data.csv", "r", encoding="utf-8") as f:
  3.     reader = csv.reader(f)  # 创建一个csv读取对象
  4.     for row in reader:  # 逐行读取
  5.         print(row)
复制代码
利用pandas储存CSV数据

除了利用内置的csv库,还能利用第三方库:pandas
  1. # 安装pandas模块
  2. pip install pandas
复制代码
储存数据:
  1. # 使用pandas写入和读取csv文件
  2. import pandas as pd  # 导入pandas模块,需要安装
  3. data = {"Name": ["John", "Jane", "Tom"], "Age": [30, 25, 22]}  # 创建一个字典数据
  4. data = [
  5.     {"Name": "John", "Age": 30},
  6.     {"Name": "Jane", "Age": 25},
  7.     {"Name": "Tom", "Age": 22},
  8. ]  # 创建一个列表数据
  9. # 上面两种方式都可以达到同样的效果
  10. df = pd.DataFrame(data)  # 创建一个DataFrame对象,使用data数据
  11. df.to_csv(
  12.     "data.csv", index=False, encoding="utf-8"
  13. )  # 将数据写入文件,index=False表示不写入行索引,encoding="utf-8"表示使用utf-8编码
复制代码
读取数据:
  1. # 读取数据
  2. df = pd.read_csv("data.csv")  # 读取文件中的数据
  3. print(df)
复制代码
效果如下:
  1.    Name  Age
  2. 0  John   30
  3. 1  Jane   25
  4. 2   Tom   22
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

盛世宏图

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表