当前位置: 首页 > news >正文

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

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


文章目录

  • 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()

总结

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

相关文章:

  • C++ Reference: Standard C++ Library reference: C Library: cstdlib
  • 【论文阅读】—— 基于自适应小生境和 k 均值操作的数据聚类差分进化算法
  • 程序替换接口
  • 让GitHub低头认错的这份阿里内部绝密Java面试八股文手册有多强?
  • Linux——Linux驱动之玩转SPI(下)iMX6ULL驱动SPI接口的6轴MEMS传感器芯片实现数据采集开发实战
  • 【牛客刷题--SQL篇】多表查询组合查询SQL25 查找山东大学或者性别为男生的信息
  • Linux下驱动开发_块设备驱动开发(内存模拟存储)
  • vue -- 组件插槽 默认插槽 具名插槽 作用域插槽
  • [附源码]Java计算机毕业设计SSM高校教材管理系统
  • asp.net园林绿化服务交易网站
  • 网络精通-VRRP+MSTP
  • 无需专业设备和技能修复AOC显示器
  • Google Earth Engine APP——在线计算23类植被指数app代码
  • R语言---Ubuntu中R语言更新至R4.2.1和R包devtools下载
  • 笔试强训48天——day9
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • ➹使用webpack配置多页面应用(MPA)
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • react 代码优化(一) ——事件处理
  • swift基础之_对象 实例方法 对象方法。
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • vue--为什么data属性必须是一个函数
  • 二维平面内的碰撞检测【一】
  • 浮动相关
  • 和 || 运算
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 看域名解析域名安全对SEO的影响
  • 山寨一个 Promise
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 关于Android全面屏虚拟导航栏的适配总结
  • #ifdef 的技巧用法
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (13)[Xamarin.Android] 不同分辨率下的图片使用概论
  • (13)Latex:基于ΤΕΧ的自动排版系统——写论文必备
  • (4)logging(日志模块)
  • (DFS + 剪枝)【洛谷P1731】 [NOI1999] 生日蛋糕
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (离散数学)逻辑连接词
  • (三)模仿学习-Action数据的模仿
  • (十一)c52学习之旅-动态数码管
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)EOS中账户、钱包和密钥的关系
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • .apk 成为历史!
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .NET Framework 服务实现监控可观测性最佳实践
  • .NET6实现破解Modbus poll点表配置文件
  • .NetCore项目nginx发布
  • .net专家(张羿专栏)
  • []串口通信 零星笔记
  • []使用 Tortoise SVN 创建 Externals 外部引用目录
  • [<死锁专题>]
  • [2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——
  • [c#基础]DataTable的Select方法