找回密码
 会员注册
查看: 38|回复: 0

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

[复制链接]

2万

主题

0

回帖

7万

积分

超级版主

积分
71754
发表于 2024-9-6 18:50:07 | 显示全部楼层 |阅读模式
介绍Python提供了多种保存数据的方式,包括文本文件(txt)、JSON文件和CSV文件。这几种是最简单的保存方式,但也很实用。Python打开文件(保存文件的前提)python打开文件有几种方式:内置的open函数os模块的os.open函数io模块的io.open函数pathlib模块的Path类的open……还有一些第三方库,这里是面向初学者的教程,不做介绍一般使用内置的open函数就足够了内置open()函数用法open函数是Python的内置函数,用于打开一个文件,并返回一个文件对象。当你使用open打开文件后,你需要在完成操作后,使用file.close()方法手动关闭文件。它的基本语法如下: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:区分换行符。一个简单的例子#打开file.txt文件,如果文件不存在则创建文件,如果文件存在则清空文件内容#以utf-8编码格式写入文件file=open("file.txt","w",encoding="utf-8")#写入内容:HelloWorldfile.write("HelloWorld")#关闭文件file.close()'运行运行使用withopen() withopen:这是一种上下文管理协议(ContextManagementProtocol),它可以自动管理资源,无论在处理文件过程中是否发生异常,都能保证with语句执行完毕后已经关闭了打开的文件句柄。推荐使用!withopen("file.txt","r",encoding="utf-8")asfile:#读取文件内容content=file.read()#打印文件内容print(content)使用文本文件(txt)保存数据文本文件(txt):这是最简单的数据保存方式,可以保存任何字符串数据。但是,文本文件不具有结构,不适合保存复杂的数据结构,如列表或字典。withopen('file.txt','w')asf:f.write('Hello,World!')'运行运行读取数据也很简单:#读取数据text=""#用于存储文件中的内容withopen("file.txt","r")asf:text=f.read()#读取文件中的所有内容print(text)#Hello,World!使用JSON保存数据JSON文件:JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,它使得人们很容易地读写数据。JSON对于保存复杂的数据结构,如列表或字典,非常有用。importjson#导入json模块,内置模块,无需安装#需要保存的数据dict={"name":"张三","age":18,}list=[1,2,3,4,5]withopen("dict.json","w")asf:#dict:需要写入的数据#f:文件对象#ensure_ascii=False:不使用ASCII编码,即支持中文#indent=4:缩进4个空格,美化输出json.dump(dict,f,ensure_ascii=False,indent=4)#将dict写入文withopen("list.json","w")asf:json.dump(list,f)#将list写入文件'运行运行json.dump是Python的json模块中的一个函数,它用于将Python对象编码成JSON格式并写入到文件中。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编码和解码器—Python3.12.3文档):obj:要编码为JSON的Python对象。fp:一个.write()-supportingfile-likeobject(支持.write()方法的类文件对象)。skipkeys:默认值是False,如果dict的keys内的数据不是基本类型(str,unicode,int,long,float,bool,None),设置为False时,就会报TypeError的错误。如果设置为True,这类key-valuepair会被忽略。ensure_ascii:默认值是True,如果obj中含有non-ASCII的字符,那么这些字符会被如何处理。如果ensure_ascii为True,这些字符会被转义为\uXXXX的序列;如果ensure_ascii为False,这些字符会被输出。check_circular:默认值是True,如果检测到循环引用(circularreference),即在待序列化的dict和list中存在相互引用的情况,那么会抛出OverflowError的错误。如果check_circular为False,这样的错误就会被忽略。allow_nan:默认值是True,如果dict内含有NaN、Infinity和-Infinity,如果设置为True,它们会被序列化成相应的值;如果设置为False,会抛出ValueError的错误。indent:应该是一个非负的整数或者字符串,如果是非负整数,那么JSONarray元素和object成员会被美化输出,前面会增加indent个空格;如果是字符串(比如'\t'),那么元素和成员会被这个字符串缩进。separators:用来指定分隔符,实际上是一个元组,第一个元素用来分隔dict中的items,第二个元素用来分隔array中的items。默认是(',',':'),如果想输出最紧凑的JSON字符串,可以指定为(',',':')。default:一个函数,它应该返回一个可序列化的版本的其被传入的参数,否则将抛出TypeError。sort_keys:如果指定为True,那么输出的JSON字符串的key将会按照字母顺序排序后输出。读取数据:#读取数据withopen("dict.json","r")asf:dict=json.load(f)#读取文件中的数据print(dict)withopen("list.json","r")asf:list=json.load(f)#读取文件中的数据print(list)使用CSV储存数据CSV文件:CSV(Comma-SeparatedValues)是一种常见的数据存储格式,它将每行数据分割成多个字段,通过逗号分隔。CSV文件可以被大多数的电子表格软件,如MicrosoftExcel和GoogleSheets,直接打开。importcsv#导入csv模块,内置模块,无需安装title=["Name","Age"]#表头data=[["John","30"],["Jane","25"],["Tom","22"]]#数据withopen("data.csv","w",newline="")asf:writer=csv.writer(f)#创建一个csv写入对象writer.writerow(title)#写入表头,witerow只能写入一行writer.writerows(data)#将data写入文件,writerows可以写入多行'运行运行读取数据:#读取数据withopen("data.csv","r",encoding="utf-8")asf:reader=csv.reader(f)#创建一个csv读取对象forrowinreader:#逐行读取print(row)使用pandas储存CSV数据除了使用内置的csv库,还能使用第三方库:pandas#安装pandas模块pipinstallpandas储存数据:#使用pandas写入和读取csv文件importpandasaspd#导入pandas模块,需要安装data={"Name":["John","Jane","Tom"],"Age":[30,25,22]}#创建一个字典数据data=[{"Name":"John","Age":30},{"Name":"Jane","Age":25},{"Name":"Tom","Age":22},]#创建一个列表数据#上面两种方式都可以达到同样的效果df=pd.DataFrame(data)#创建一个DataFrame对象,使用data数据df.to_csv("data.csv",index=False,encoding="utf-8")#将数据写入文件,index=False表示不写入行索引,encoding="utf-8"表示使用utf-8编码'运行运行读取数据:#读取数据df=pd.read_csv("data.csv")#读取文件中的数据print(df)效果如下:NameAge0John301Jane252Tom22
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-10 13:27 , Processed in 0.452789 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表