python处理二进制数据的方法


Posted in Python onJune 03, 2015

本文实例讲述了python处理二进制数据的方法。分享给大家供大家参考。具体如下:

#!/usr/env/env python 
#-*- coding: cp936 -*- 
''''' 
add Head Infomation for pcm file 
''' 
import sys 
import struct 
import os 
__author__ = 'bob_hu, hewitt924@gmail.com' 
__date__ = 'Dec 19,2011' 
__update__ = 'Dec 19,2011' 
def geneHeadInfo(sampleRate,bits,sampleNum): 
  ''''' 
  生成头信息,需要采样率,每个采样的位数,和整个wav的采样的字节数 
  ''' 
  rHeadInfo = '\x52\x49\x46\x46' 
  fileLength = struct.pack('i',sampleNum + 36) 
  rHeadInfo += fileLength 
  rHeadInfo += '\x57\x41\x56\x45\x66\x6D\x74\x20\x10\x00\x00\x00\x01\x00\x01\x00' 
  rHeadInfo += struct.pack('i',sampleRate) 
  rHeadInfo += struct.pack('i',sampleRate * bits / 8) 
  rHeadInfo += '\x02\x00' 
  rHeadInfo += struct.pack('H',bits) 
  rHeadInfo += '\x64\x61\x74\x61' 
  rHeadInfo += struct.pack('i',sampleNum) 
  return rHeadInfo 
if __name__ == '__main__': 
  if len(sys.argv) != 5: 
    print "usage: python %s inFile sampleRate bits outFile" % sys.argv[0] 
    sys.exit(1) 
  fout = open(sys.argv[4],'wb') #用二进制的写入模式 
  #fout.write(struct.pack('4s','\x66\x6D\x74\x20'))
  #写入一个长度为4的串,这个串的二进制内容为 66 6D 74 20 
  #Riff_flag,afd,fad,afdd, = struct.unpack('4c',fin.read(4))
  #读入四个字节,每一个都解析成一个字母 
  #open(sys.argv[4],'wb').write(struct.pack('4s','fmt '))
  #将字符串解析成二进制后再写入 
  #open(sys.argv[4],'wb').write('\x3C\x9C\x00\x00\x57')
  #直接写入二进制内容:3C 9C 00 00 57 
  #fout.write(struct.pack('i',6000)) #写入6000的二进制形式 
  #check whether inFile has head-Info 
  fin = open(sys.argv[1],'rb') 
  Riff_flag, = struct.unpack('4s',fin.read(4)) 
  if Riff_flag == 'RIFF': 
    print "%s 有头信息" % sys.argv[1] 
    fin.close() 
    sys.exit(0) 
  else: 
    print "%s 没有头信息" % sys.argv[1] 
    fin.close() 
    #采样率 
    sampleRate = int(sys.argv[2]) 
    #bit位 
    bits = int(sys.argv[3]) 
    fin = open(sys.argv[1],'rb') 
    startPos = fin.tell() 
    fin.seek(0,os.SEEK_END) 
    endPos = fin.tell() 
    sampleNum = (endPos - startPos) 
    print sampleNum 
    headInfo = geneHeadInfo(sampleRate,bits,sampleNum) 
    fout.write(headInfo) 
    fin.seek(os.SEEK_SET) 
    fout.write(fin.read()) 
    fin.close() 
    fout.close()

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
python基础教程之获取本机ip数据包示例
Feb 10 Python
Python3读取UTF-8文件及统计文件行数的方法
May 22 Python
NetworkX之Prim算法(实例讲解)
Dec 22 Python
利用Hyperic调用Python实现进程守护
Jan 02 Python
简单实现Python爬取网络图片
Apr 01 Python
python3解析库BeautifulSoup4的安装配置与基本用法
Jun 26 Python
Tensorflow中的placeholder和feed_dict的使用
Jul 09 Python
python实现对任意大小图片均匀切割的示例
Dec 05 Python
python selenium 执行完毕关闭chromedriver进程示例
Nov 15 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
Feb 10 Python
Pytorch实现将模型的所有参数的梯度清0
Jun 24 Python
详解在Python中使用Torchmoji将文本转换为表情符号
Jul 27 Python
Python读写配置文件的方法
Jun 03 #Python
python操作ssh实现服务器日志下载的方法
Jun 03 #Python
Python实现建立SSH连接的方法
Jun 03 #Python
解密Python中的描述符(descriptor)
Jun 03 #Python
python实用代码片段收集贴
Jun 03 #Python
Perl中著名的Schwartzian转换问题解决实现
Jun 02 #Python
python通过ssh-powershell监控windows的方法
Jun 02 #Python
You might like
rephactor 优秀的PHP的重构工具
2011/06/09 PHP
php判断变量类型常用方法
2012/04/24 PHP
解析在PHP中使用mysqli扩展库对mysql的操作
2013/07/03 PHP
Array.prototype.slice.apply的使用方法
2010/03/17 Javascript
jquery maxlength使用说明
2011/09/09 Javascript
一个关于javascript匿名函数的问题分析
2012/03/30 Javascript
javascript实现图片切换的幻灯片效果源代码
2012/12/12 Javascript
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
防止按钮在短时间内被多次点击的方法
2014/03/10 Javascript
浅谈js中的闭包
2015/03/16 Javascript
JavaScript获取页面中表单(form)数量的方法
2015/04/03 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
2015/08/31 Javascript
正则表达式(语法篇推荐)
2016/06/24 Javascript
AngularJS入门教程之控制器详解
2016/07/27 Javascript
canvas绘制万花筒效果(代码分享)
2017/01/20 Javascript
基于node.js制作简单爬虫教程
2017/06/29 Javascript
js实现简易聊天对话框
2017/08/17 Javascript
Node.js中Bootstrap-table的两种分页的实现方法
2017/09/18 Javascript
解决vue项目报错webpackJsonp is not defined问题
2018/03/14 Javascript
微信小程序实现多选删除列表数据功能示例
2019/01/15 Javascript
解决vue.js提交数组时出现数组下标的问题
2019/11/05 Javascript
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
2014/10/23 Python
以一段代码为实例快速入门Python2.7
2015/03/31 Python
在Django中进行用户注册和邮箱验证的方法
2016/05/09 Python
Python脚本获取操作系统版本信息
2016/12/17 Python
Python三级菜单的实例
2017/09/13 Python
Tensorflow加载预训练模型和保存模型的实例
2018/07/27 Python
Python实现随机生成任意数量车牌号
2020/01/21 Python
基于Django OneToOneField和ForeignKey的区别详解
2020/03/30 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
德国网上药房:Apotal
2017/04/04 全球购物
测控技术与通信工程毕业生自荐信范文
2013/12/28 职场文书
财经学院自荐信范文
2014/02/02 职场文书
2016七夕情人节感言
2015/12/09 职场文书
浅谈Python列表嵌套字典转化的问题
2021/04/07 Python
Python中的datetime包与time包包和模块详情
2022/02/28 Python