Python 官方文档:入门教程 => 点击学习
python写入保存数据方法 一.使用open()函数介绍open()函数相关使用方法1.保存格式为txt2.数据保存格式为csv1. 数据为字典类型2. 数据为数组类型3. 数据格式为JSO
==完整的语法格式为:==
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
参数说明:
1.file: 必需,文件路径(相对或者绝对路径)。
2.mode: 可选,文件打开模式
3.buffering: 设置缓冲
4.encoding: 一般使用utf8
5.errors: 报错级别
6.newline: 区分换行符
7.closefd: 传入的file参数类型
8.opener: 设置自定义开启器,开启器的返回值必须是一个打开的文件描述符。
mode的参数介绍
模式 | 描述 |
---|---|
r | 只读的方式打开文件,文件会将指针放在文件的开头,是默认模式 |
r+ | 打开文件用于读写 |
w | 打开文件只用于写入,如果该文件存在则打开文件,并从头开始编辑,也就是原有的内容会被删除,如果文件不存在,则创建新文件 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
操作代码如下:
write()方法写入数据
#write方法f=open('test.txt','w')f.write("每天哦")#写入数据f.write("你好")f.close()#关闭文件print("写入完成")#test.txt内容如下:#每天哦你好#再一次进行写入操作f=open('test.txt','w')f.write("每天都要加油哦!nihao1")#写入数据f.write("sdhsgfjhkgkj")f.close()print("写入完成")#test.txt内容如下:#每天都要加油哦!nihao1sdhsgfjhkgkj
writelines() 方法用于向文件中写入一序列的字符串。这一序列字符串可以是由迭代对象产生的,如一个字符串列表。换行需要制定换行符 \n。
f=open('test.txt','w')f.writelines(["每天哦","skdhfkjgrfshj"])#写入数据f.writelines(["每天哦\n","skdhfkjgrfshj"])#加入换行符f.close()print("写入完成")#文本结果如下:#每天哦skdhfkjgrfshj每天哦#skdhfkjgrfshj
write()里面只可以写入一个字符窜,不然会报错,同样writelines()里面需要时一序列,比如数组
**接下来我们来看看a模式**#先使用w模式写入10个数f=open('test.txt','w')for i in range(10): f.write(str(i)+'\n') f.close()print("写入完成")#文件内容结果如下:0123456789#接着把w改写成af=open('test.txt','a')for i in range(10): f.write(str(i)) f.close()print("写入完成,改写为a")#文本内容显然已经在后面添加数字01234567890123456789
我们创建和打开文件还有种书写方式,相比之下比上述更方便,那就是with open
with open可以说是open的优化用法或高级用法,相比open更加简洁、安全。
open函数必须搭配.close()方法使用,先用open打开文件,然后进行读写操作,最后用.close()释放文件。with open则无需.close()语句,所以说简洁。如以下例子。虽然只少了一行代码,但也确实是少了。
上述代码写成with open形式如下代码:
with open('test.txt','a')as f: for i in range(10): f.write(str(i))print("完成写入")
顺便提一下怎么使用python打开查看文件
代码如下:
#with open("D:/learnpy/test.txt",'r')as f: 去掉r,斜杠变成反斜杠也可以with open(r"D:\learnpy\test.txt",'r')as f: l=f.read()print(l)print("finish")#结果:>>> ========================= RESTART: D:\learnpy\open().py ========================3月14日,英皇电影巡礼活动上,成龙、张学友、谢霆锋、张家辉等台下同框。这次的巡礼阵容十分豪华基本上把英皇的不老男神都请来了。finish>>>
```Pythondata="3月14日,英皇电影巡礼活动上,成龙、张学友、谢霆锋、张家辉等台下同框。这次的巡礼阵容十分豪华基本上把英皇的不老男神都请来了。"with open('test.txt','w')as f: f.write(data)print("finish")#其他数据照旧,主要是写入的类型属于字符串就行,建议是最后使用writelines(),这个可以写入多条数据,比较灵活
写入的文本内容如图所示
写入数据到csv文件,需要创建一个writer对象,主要用到两个方法。一个是writerow,这个是写入一行。一个是writerows,这个是写入多行。
import csvwith open("D:/learnpy/test.csv",'w',newline='')as f: data={'name':'小明','age':'23','sex':'女'} data1=[('xiao',21),('sdhfsj',89)] #创建writer对象 writer=csv.writer(f) #加入表头 writer.writerow(['姓名','年龄']) writer.writerows(data1)#写入数据
写好打开文件如下:
注意:如果不加newline=’ '就可能出现如下情况:
数据格式划分:
import csvwith open("D:/learnpy/test.csv",'w',newline='')as f: data={'name':'小明','age':'23','sex':'女'} writer=csv.DictWriter(f,['name','age','sex']) writer.writeheader()#写入数据表头 writer.writerow(data)print("finish")
数据写入:
写入多条数据可以使用writerows():
import csvwith open("D:/learnpy/test.csv",'w',newline='')as f: data={'name':'小明','age':'23','sex':'女'} data1={'name':'明','age':'89','sex':'女'} writer=csv.DictWriter(f,['name','age','sex']) writer.writeheader()#写入数据表头 writer.writerows([data,data1])print("finish")
import csvwith open("D:/learnpy/test.csv",'w',newline='')as f: '''data={'name':'小明','age':'23','sex':'女'} data1={'name':'明','age':'89','sex':'女'} writer=csv.DictWriter(f,['name','age','sex']) writer.writeheader()#写入数据表头''' l1=['小话','21'] l2=['小名','22'] writer=csv.writer(f) writer.writerow(['姓名','年龄'])#添加表头 writer.writerows([l1,l2])print("finish")
import csvimport jsonwith open("D:/learnpy/test.csv",'w',newline='')as f: data=[{ "name":"Google", "info":[ "Android", "Google 搜索", "Google 翻译" ] },{ "name":"Runoob", "info":[ "菜鸟教程", "菜鸟工具", "菜鸟微信" ] },{ "name":"Taobao", "info":[ "淘宝", "网购" ] }] print(type(data)) headers=data[0].keys() json_values=[] for i in data: json_values.append(i.values()) writer=csv.writer(f) writer.writerow(headers)#添加表头 writer.writerows(json_values)print("finish")
- 字典
字典是一种数据结构,是python中的一种数据类型;以 key:value 的形式存储数据,在一个字典中不允许出现两个相同的key值,如果出现,后面一个key值会覆盖前面的key值。
语法格式:
dic = {‘name’: ‘张’, ‘age’: 11, ‘性别’: ‘男’}
注意:key、value都可以用单引号、双引号引起来。- Json
Json是一种打包的数据格式,本质上是字符串,也是按照 key:value 来存储数据,key 只能是字符串,且可以有序、重复;必须使用双引号作为key或者值的边界符,不能使用单引号.
语法格式:
json = ‘{“name”: “jim”, “languages”: [“Python”, “Java”]}’
注意:key、value 必须用双引号引起来。
参考以下文章链接,详细介绍了两者区别以及相关转换: https://blog.csdn.net/qq_41674508/article/details/127430297
import requestsurl='https://gimg3.baidu.com/search/src=Http%3A%2F%2Fpics4.baidu.com%2Ffeed%2F50da81cb39dbb6fd6abb732c2b227513962b37ed.jpeg%40f_auto%3Ftoken%3D8b6c38eae63037212d4e6bdbbcac2781&refer=http%3A%2F%2Fwww.baidu.com&app=2021&size=f360,240&n=0&g=0n&q=75&fmt=auto?sec=1678986000&t=347b98cded13deea606b43ecee356eae'res=requests.get(url)img=res.content#图片是以二进制方式打开with open('1.jpg','wb')as f: f.write(img) print("下载成功")
保存音频
import requestsurl='http://vd3.bdstatic.com/mda-mbtq5ugnhbjwzens/v1-cae/mda-mbtq5ugnhbjwzens.mp4?playlist=%5B%22sc%22%2C%221080p%22%2C%22hd%22%5D'res=requests.get(url)img=res.contentwith open('2.mp4','wb')as f: f.write(img) print("下载成功")
可参考一下这篇:链接: https://blog.csdn.net/qq_52764364/article/details/129602239
其他类型的文件格式类似
import pandas as pddata=pd.DataFrame({"姓名":["mary","jack"],"年龄":[22,21]})data.to_csv("info.csv",index=False)#默认index为trueprint("保存完成")
这样写中文出现乱码的情况了,
修改代码
#只需要这样改,把编码方式改成utf-8_sigdata.to_csv("info.csv",index=False,encoding="utf-8_sig")#结果如下:
header默认参数为True,如果没有设置header参数,它会自动添加列索引,
也可以在header=[“”,“”,“”]方式添加表头
或者不添加索引,如下图代码
import pandas as pddata=pd.DataFrame([["ni","cjm",32],["你好","fjd",90]])#data=pd.DataFrame({"姓名":["mary","jack"],"年龄":[22,21]})data.to_excel("info.xlsx",header=False,index=False,encoding="utf-8_sig")print("保存完成")
上述内容是python保存数据的一些方法的总结,一些不同数据类型的保存方法选择,以及涉及到pandas的一些使用,其实我主要是为了,在网上爬取数据时,针对爬取的数据进行怎么样的保存处理方法做了一个大致的总结,因为自己每次保存数据都不知道从哪里下手,不过,这次好好地整理了一下,这样下次就以更快的保存数据,还有就是,有时候保存数据或者读取数据,会出现报错的情况或者权限不允许,这建议把保存文件的路径写完整,试一试
来源地址:https://blog.csdn.net/qq_52764364/article/details/129527369
--结束END--
本文标题: python保存数据方法总结
本文链接: https://www.lsjlt.com/news/395332.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0