如何处理二进制文件
来源:互联网 发布:和孩子一起学编程 编辑:程序博客网 时间:2024/05/22 15:54
实际案例
WAV是一种音频文件的格式,音频文件为二进制文件。WAV文件由头部信息和音频采样数据构成。前44个字节为头部信息,包括声道数、采样频率和PCM位宽等,后面是音频采样数据。
(注:图片来源于互联网,如若侵权请联系本人立删,谢谢!)
请使用Python分析一个WAV文件头部信息,处理音频数据。
解决方案:
- open函数以二进制模式打开文件,指定mode参数为’b’
- 二进制数据可以用readinto读入到提取分配好的buffer中,便于数据处理
- 解析二进制数据可以使用标准库中的struct模块的unpack方法
注:关于unpack()的参数问题,Python官方文档中并没用明确说明。因此,可查看嘎啦的博文。
具体代码如下:
# -*- coding: utf-8 -*-import structimport arrayf = open('test.wav', 'rb')# 读取文件前44个字节的数据info = f.read(44)# 解析二进制数据--声道数print struct.unpack('h', info[22:24])# WAV文件中data部分的大小 / 数据类型的大小 -> buffer的大小f.seek(0, 2)n = (f.tell() - 44) / 2buf = array.array('h', (0 for _ in xrange(n)))# 将数据读至buf中f.seek(44)f.readinto(buf)for i in xrange(n): # 数据处理,相当于将音频文件的声音变小 buf[i] /= 8f.close()# 创建demo.wavf = open('demo.wav', 'wb')# 将test.wav中前44个字节的数据写入文件f.write(info)# 将buf中的数据写入文件buf.tofile(f)f.close()
阅读全文
0 0
- 如何处理二进制文件
- 二进制文件处理
- 用shell处理二进制文件
- C#封装二进制文件处理
- python-17-如何读取文本文件?如何处理二进制文件?如何设置文件的缓冲?
- JS如何读取二进制文件?
- Ubuntu 如何查看二进制文件
- vim如何编辑二进制文件
- 如何合并两个二进制文件
- 如何读写二进制文件
- JDBC中关于如何获得主键、处理二进制文件、使用元数据
- 用二进制文件处理学生成绩
- 用二进制文件处理学生信息
- 用二进制文件处理学生成绩
- 用二进制文件处理学生成绩
- 用二进制文件处理学生成绩
- 用二进制文件处理学生成绩
- InternetReadFile如何正确读取二进制文件
- spring mvc高级篇(八):Spring+SpringMVC+Mybatis整合(采用泛型和注解优化)
- Codeforces Round #384 (Div. 2) B. Chloe and the sequence
- JVM笔记(二)——HotSpot虚拟机对象
- http一个完整的请求?
- Java源码阅读之HashMap
- 如何处理二进制文件
- android studio gradle/gradle plugin 配置详解,解决"Gradle sync failed: Unknown host 'services.gradle.org'."
- 杭电acm2017 字符数量统计
- Codeforces #428 (Div. 2) C. Journey (DFS
- Spring-AOP基础知识
- java版poi+excel导入实例1
- 尾递归
- DDNS(花生壳)
- 数据结构-红黑树