免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 19119 | 回复: 3
打印 上一主题 下一主题

python如何读取一个二进制文件,并16进制格式化后写入另一个文件? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-05 23:29 |只看该作者 |倒序浏览
Perl和python对大文件(比如200Kbytes的mp3): Perl比较容易处理,Python还没有做成功,那位可以指点一下,谢谢拉。

Perl里逐个字符read,然后可以通过print和printf把每个字节用0x%02x的格式write到另一个文件里。

Python里逐个字符read,然后用hex(ord(str[0]))把数据write到另一个文件,操作到第1421次时会提示string index超出了范围。

那位大虾遇到过这个问题,请教了,谢谢!

论坛徽章:
0
2 [报告]
发表于 2009-05-06 09:07 |只看该作者
你不会是数据读完了吧?
你最好别把你的数组命名为str,那个是python的string类型。

论坛徽章:
0
3 [报告]
发表于 2009-05-06 09:24 |只看该作者
myfile = file("file.mp3","rb")

加上文件打开方式 "rb" 试试,应该就可以了!

#!/usr/bin/env python
infile = file("in.mp3","rb")
outfile = file("out.txt","wb")
def main():
    while 1:
        c = infile.read(1)
        if not c:
            break
        outfile.write(hex(ord(c)))
    outfile.close()
    infile.close()
if __name__ == '__main__':
    main()


[ 本帖最后由 千年沉寂 于 2009-5-6 09:36 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2009-05-06 21:54 |只看该作者

回复 #3 千年沉寂 的帖子

谢谢chrisyan,我改正为strData字符串名也不可以。
谢谢千年沉寂,解决了我的问题,你写的代码也很漂亮。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP