Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
文章目录
前言
提示:以下是本篇文章正文内容,下面案例可供参考
一、什么是文件读写?
“流”是一种抽象的概念,也是一种比喻,水流是从—端流向另一端的,而在python中的“水流"就是数据,数据会从一端"流向”另一端,根据流的方向性,我们可以将流分为输入流和输出流,当程序需要从数据源中读入数据的时候就会开启一个输入流,相反,写出数据也会开启一个输出流,需要写入的数据源可以是文件、内存或者网络等。
二、文件读写方式
读取方式描述r只读(默认),文件需存在;r+可读取也可以写入,文件需存在;rb表示以二进制方式读取文件,文件需存在;w只写,打开一个新文件写入,如果该文件存在则会覆盖;w+可读取也可以写入,打开创建新文件并写入数据,如果文件已存在,则覆盖;wb二进制写入,打开一个新文件写入,如果该文件存在则会覆盖;a追加写入,文件需存在,在文件内容结尾处继续写入新内容;a+追加写入,文件不存在则会创建一个新文件,在文件内容结尾处继续写入新内容;
三、csv文件读写
1.csv 简介
CSV文件通常使用逗号来分割每个特定数据值(也可用’: ::’,’; ;;'等),具体的文件结构如下:
2.csv 写入
file_path ="number.csv"
content_list =['1,2,3,4,5\n','6,7,8,9,10\n','11,12,13,14,15\n','16,17,18,19,20\n']
with open(file=file_path, mode='w', encoding='utf-8') as fis:for content in content_list:
fis.write(content)print(f"写入成功:{content}", end='')
3.csv 读入
file_path ="number.csv"
with open(file=file_path, mode='r', encoding='utf-8') as fis:
content_list = fis.readlines()for content in content_list:print(f"读入成功:{content}", end='')print(content.strip())
四、XLSX文件读写
1.xlsx 简介
xlsx是Microsoft Office EXCEL 2007/2010/2013/2016/2019文档的扩展名。其基于Office Open XML标准的压缩文件格式取代了其以前专有的默认文件格式,在传统的文件名扩展名后面添加了字母“x”(即“.docx”取代“.doc”、“.xlsx”取代“.xls”、“.pptx”取代“.ppt”)。任何能够打开“.xlsx”文件的文字处理软件都可以将该文档转换为“.xls”文件,“.xlsx”文件比“.xls”文件所占用空间更小
2.xlsx 写入
import pandas as pd
file_path ='number.xlsx'
data_list = pd.DataFrame(columns=('A','B','C','D','E')) # pandas Version:1.1.3
content_list =[['1','2','3','4','5\n'],['6','7','8','9','10\n'],['11','12','13','14','15\n']]for ls in content_list:
result_list = data_list.append(pd.DataFrame({'A':[ls[0]],'B':[ls[1]],'C':[ls[2]],'D':[ls[3]],'E':[ls[4]]}))print(f"存入成功:{ls}")
with pd.ExcelWriter(file_path, engine="openpyxl", mode='a+') as writer: # openpyxl Version:3.0.10
data_list.to_excel(writer, sheet_name='sheet1', index=False)print("数据写入成功!")
3.xlsx 读入
import pandas as pd
file_path ='number.xlsx'
df = pd.read_excel(io=file_path, sheet_name=0)
a_list =list(df['A']) # 按列提取,根据列名,得到list
print('a_list:', a_list)for index, row in df.iterrows(): # index = 行标号(索引)print(row) # 按行遍历
print(f"row['A']: {row['A']}") # 根据列名在当前行提取值
break
注意报错信息:ImportError: Missing optional dependency 'xlrd'. Install xlrd >= 1.0.0 for Excel support Use pip or conda to install xlrd.
需要安装库:pip install xlrd==1.2.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
pandas常用方法:https://www.lmlphp.com/user/60946/article/item/2367333/
五、JSON文件读写
1.json 简介
JSON(JavaScript Object Notation, JS对象简谱)是一种轻量级的数据交换格式。它基于 ECMAScript(European Computer Manufacturers Association, 欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
2.json 写入
import json
from pprint import pprint
file_path ='number.json'
content_list =[['1','2','3','4','5'],['6','7','8','9','10'],['11','12','13','14','15']]
key_list =['A','B','C']
data =dict()for i in range(len(content_list)):
data[key_list[i]]= content_list[i]
with open(file=file_path, mode='w', encoding='utf-8') as fis:
fis.write(json.dumps(obj=data, ensure_ascii=False, indent=4))pprint(data)print("json数据写入完成")
3.json 读取
import json
from pprint import pprint
file_path ='number.json'
with open(file=file_path, mode='r', encoding='utf-8') as fis:
content = fis.read()
json_data = json.loads(content) # 序列化之后可以根据字典方式存取数据
json_data['D']=['16','17','18','19','20']pprint(json_data)
六、二进制(MP3)写入
1.二进制 简介
二进制(binary),发现者莱布尼茨,是在数学和数字电路中以2为基数的记数系统,是以2为基数代表系统的二进位制。这一系统中,通常用两个不同的符号0(代表零)和1(代表一)来表示 [1] 。数字电子电路中,逻辑门的实现直接应用了二进制,现代的计算机和依赖计算机的设备里都使用二进制。每个数字称为一个比特(Bit,Binary digit的缩写)
2.二进制(MP3) 写入
import requests
file_path ='test.mp3'
headers ={'user-agent': 'Mozilla/5.0(Windows NT 10.0; Win64; x64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'
}
url = 'https://m701.music.126.net/20221023111433/7c8defd5c895b331c9df055e99619652/jdyyaac/obj/w5rDlsOJwrLDjj7CmsOj/7385120648/b9ed/2e3d/169a/941c017bebc80041b787542396dab922.m4a'
response = requests.get(url=url, headers=headers)
with open(file_path,'wb') as fis:for chunk in response.iter_content(chunk_size=1000):
fis.write(chunk)
fis.flush()print("歌曲下载完成!")
3.二进制(MP3) 读入
file_path ='test.mp3'
with open(file_path,'rb') as fis:
content = fis.read()
总结
例如:以上就是今天要讲的内容,本文仅仅简单介绍了文件的读写使用,后续有常用的读取操作会在这篇博客中持续更新;
版权归原作者 EXI-小洲 所有, 如有侵权,请联系我们删除。