Python csv、xlsx、json、二进制(MP3) 文件读写基本使用

举报
EXI-小洲 发表于 2022/12/10 20:07:11 2022/12/10
【摘要】 “流”是一种抽象的概念,也是一种比喻,水流是从—端流向另一端的,而在python中的“水流"就是数据,数据会从一端"流向”另一端,根据流的方向性,我们可以将流分为输入流和输出流,当程序需要从数据源中读入数据的时候就会开启一个输入流,相反,写出数据也会开启一个输出流,需要写入的数据源可以是文件、内存或者网络等。

Python csv、xlsx、json、二进制(MP3) 文件读写基本使用

文章目录

前言

一、什么是文件读写?

二、文件读写方式

三、csv文件读写

1.csv 简介

2.csv 写入

3.csv 读入

四、XLSX文件读写

1.xlsx 简介

2.xlsx 写入

3.xlsx 读入

五、JSON文件读写

1.json 简介

2.json 写入

3.json 读取

六、二进制(MP3)写入

1.二进制 简介

2.二进制(MP3) 写入

3.二进制(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='')

控制台打印
csv文件内容

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数据写入完成")

控制台打印
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("歌曲下载完成!")

下载文件mp3
开始听歌

3.二进制(MP3) 读入

file_path = 'test.mp3'
with open(file_path, 'rb') as fis:
    content = fis.read()

总结

例如:以上就是今天要讲的内容,本文仅仅简单介绍了文件的读写使用,后续有常用的读取操作会在这篇博客中持续更新;

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。