python修改mp3信息_Python修改MP3文件的方法

本文实例讲述了Python修改MP3文件的方法。分享给大家供大家参考。具体如下:

用这个程序修改后的MP3比原来要小一些了,因为一张图片被删除了,起到了给MP3"瘦身"的作用。在一些mp3中,每个都有一张400多K的图片,10几个MP3,就相当一个普通MP3文件的大小了。

# -*- coding: cp936 -*-

"""

将MP3文件中的ID3V2.3部分去掉,以便在MP3机上播放

用法:mp3lcear [源mp3目录] [生成的mp3目录]

"""

import sys

import os

import string

import shutil

import struct

import thread

import threading

import time

mp3suffix = 'mp3'

class Process(threading.Thread):

"""

简单地在运行的过程中显示进度

"""

def __init__(self,msg,sleepTime):

threading.Thread.__init__(self)

self.msg = msg

self.running = True

self.sleepTime = sleepTime

def setPause(self,pause):

self.pause = pause

def setRunning(self,running):

self.running = running

def run (self):

while(self.running):

self.pause.wait()

print self.msg,

time.sleep(self.sleepTime)

def usage(code, msg=''):

"""

程序的使用方法

"""

print >> sys.stderr, __doc__

if msg:

print >> sys.stderr, msg

sys.exit(code)

def checkDir(argDir,create=False):

"""

检查目录是否存在,如果create为Ture,则新建一个目录

"""

tempDir = None

if(not os.path.isdir(argDir)):

currentDir = os.path.abspath(os.curdir)

tempDir = os.path.join(currentDir,argDir)

if(not os.path.isdir(tempDir) and create):

os.mkdir(tempDir)

else:

usage(1,"目录"+argDir+"不存在")

else:

tempDir = os.path.abspath(argDir)

return tempDir

def clearMp3(srcFile,destFile):

"""

修改mp3文件,并将其创建到destFile所指定的地址

"""

global process

srcfp = None

filesize = os.path.getsize(srcFile)

try:

srcfp = open(srcFile,'rb')

head = srcfp.read(3)

if(head=='ID3'):

srcfp.seek(3,1)

size = srcfp.read(4)

if(not len(size)==4):

print srcFile+'文件格式错误'

else:

size0 = struct.unpack('b',size[0])[0]

size1 = struct.unpack('b',size[1])[0]

size2 = struct.unpack('b',size[2])[0]

size3 = struct.unpack('b',size[3])[0]

headSize =(((size0&0x7f)<<21) | ((size1&0x7f)<<14) | ((size2&0x7f)<<7) | (size3&0x7f))

filesize = filesize - headSize

destfp = None

try:

dataLen = 0

destfp = open(destFile,'wb')

srcfp.seek(headSize,1)

data=srcfp.read(1024)

while (data!= ''):

destfp.write(data)

data=srcfp.read(1024)

except Exception,e:

print '创建文件'+destFile+'错误',e

try:

if (destfp != None):

destfp.close

except Exception,de:

print de

else:

print srcFile+'不需要修改 拷贝',

try:

shutil.copyfile(srcFile,destFile)

except Exception, ce:

print ce

except Exception,oe:

print '修改中出错',oe

try:

if (srcfp != None):

srcfp.close()

except Exception,se:

print de

if __name__ == "__main__":

if(len(sys.argv)<3):

usage(1)

global process

sourceDir = checkDir(sys.argv[1])

destDir = checkDir(sys.argv[2],True)

print 'Mp3源目录',sourceDir

print 'Mp3目的目录',destDir

process = Process('...',1)

pause = threading.Event()

process.setPause(pause)

process.start()

for filename in os.listdir(sourceDir):

srcPath = os.path.join(sourceDir, filename)

destPath = os.path.join(destDir, filename)

if os.path.isfile(srcPath):

print '开始处理 '+filename,

tempfilename = filename.lower()

if(not tempfilename.endswith(mp3suffix)):

print filename+'不是一个mp3文件\n'

else:

pause.set()

clearMp3(srcPath,destPath)

pause.clear()

print '结束 \n'

pause.set()

process.running = False

sys.exit(0)

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

本文标题: Python修改MP3文件的方法

本文地址: http://www.cppcns.com/jiaoben/python/126497.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/430736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯 无穷分数

无穷分数无穷的分数&#xff0c;有时会趋向于固定的数字。请计算【图1.jpg】所示的无穷分数&#xff0c;要求四舍五入&#xff0c;精确到小数点后5位&#xff0c;小数位不足的补0。请填写该浮点数&#xff0c;不能填写任何多余的内容。<span style"font-size:14px;&quo…

Tecplot如何提取某点数据并导出

Tecplot2018 选中曲线&#xff0c;右键&#xff0c;导出到文件&#xff0c;文件用记事本打开&#xff0c;复制到excel或者origin处理

shell 进入hadoop_Hadoop Shell命令

调用文件系统(FS)Shell命令应使用bin/hadoop fs 的形式。所有的的FS shell命令使用URI路径作为参数。URI格式是scheme://authority/path。对HDFS文件系统&#xff0c;scheme是hdfs&#xff0c;对本地文件系统&#xff0c;scheme是file。其中scheme和authority参数都是可选的&am…

css 水平垂直居中那些事

本文是在参考众大神文章基础上&#xff0c;整理的几个常用方案&#xff0c;另外也掺杂个人的一些猜想&#xff0c;如有不妥&#xff0c;请不吝指出下面开始正题,为了方便验证展示&#xff0c;下面的案例我会直接附上个人验证的源码截图 1. <!doctype html> <html lang…

python 循环指定次数_亮仔的Python之路Day7——Python循环语句

day7&#xff1a;2019-09-01今日学习目的&#xff1a;了解循环语句&#xff0c;使用代码解放劳动力实践是检验真理的唯一标准我们使用代码的最终目的是解放劳动力当你还在复制粘贴累的半死的时候别人随手几行代码就搞定今天学习的是2种循环语句一、什么是循环语句循环语句:可以…

iOS MBProgressHUD 之带底板的加载提示

文章来自&#xff1a;http://blog.csdn.net/ryantang03/article/details/7877120 MBProgressHUD是一个开源项目&#xff0c;实现了很多种样式的提示框&#xff0c;使用上简单、方便&#xff0c;并且可以对显示的内容进行自定义&#xff0c;功能很强大&#xff0c;很多项目中都有…

HEC-RAS如何修改SA/2D Connection的名称

RAS Mapper中打开几何文件&#xff0c;进入编辑模式。

python调试蓝牙适配器_我写了一个查看Android手机的蓝牙模块是否开启的代码。在AVD上调试,因为是电脑,没有蓝牙适配器,可是...

为什么我用到蓝牙手机上的时候&#xff0c;刚打开这个程序&#xff0c;就会停止工作呢&#xff1f;代码如下&#xff0c;代码格式什么没错。publicclassMainActivityextendsActivity{BluetoothAdaptermBluetoothAdapternull;O...为什么我用到蓝牙手机上的时候&#xff0c;刚打开…

CFD何为收敛

文章来自——【小白的CFD之旅】26 何为收敛 - 流沙[胡坤] - 博客园 在CFD计算中&#xff0c;每一个网格上都会存储众多物理量&#xff0c;因此每一个网格上的任一个物理量在计算迭代过程中都会存在一个残差&#xff0c;这意味着在一次迭代过程中&#xff0c;同一物理量在不同的…

如何使用 Microsoft Azure Media Services 现场直播,(Live Streaming) 直播流媒体系统

不久之前&#xff0c;微软公司宣布了 Microsoft Azure Media Services 实时直播服务 ( Live ) 开始进入技术预览阶段&#xff0c;公开接受用户测试。 而这些实时直播服务其实早已被 NBC 运动频道用于多项重大运动赛事直播&#xff0c;包括英超联赛、NHL、周日橄榄球之夜 ( Sund…

vue如何split_vue代码分割的实现(codesplit)

在vue单页应用中&#xff0c;若不做任何处理&#xff0c;所有vue文件会打包为一个文件&#xff0c;这个文件非常的大&#xff0c;造成网页在首次进入时比较缓慢。做了代码分割后&#xff0c;会将代码分离到不同的bundle中&#xff0c;然后进行按需加载这些文件&#xff0c;能够…

两相流计算中,如何用Tecplot提取水相断面平均物理量?

1.显示水相 1.导入计算结果case、data文件到Tecplot中 2.Tecplot菜单栏Plot-Blanking-Value Blanking... 以体积分数为变量进行blanking: 此时&#xff0c;只显示体积分数<0.5的区域 2.提取水相断面物理量断面平均值 1.切片 Slices-Details-选择需要的切片位置-Extrac…

【Android实战】Gallary+ImageSwicther图片查看器

仿照如今各大新闻站点图片新闻的浏览模式&#xff0c;上面展示详细图片&#xff08;ImageSwitch&#xff09;&#xff0c;以下是能够滑动的小图片(Gallery)。当中须要注意的是ImageSwitch须要定义一个工厂返回的组件&#xff0c;而且能够设置动画效果。Gallery用适配器载入布局…

陈伯雄lisp_基于AutoLisp的AutoCAD二次开发自动生成系统图

龙源期刊网http://www.qikan.com.cn基于AutoLisp的AutoCAD二次开发自动生成系统图作者&#xff1a;郎建山金江来源&#xff1a;《科技视界》2013年第22期【摘要】本文主要阐述了应用AutoLisp语言二次开发AutoCAD自动生成系统图的实现方案。【关键词】AutoCAD&#xff1b;AutoLi…

Tecplot中使用公式

如图&#xff0c;计算结果中只有x、y、z三个方向流速&#xff0c;如果要知道某点流速大小需要自定义公式 方法&#xff1a; 其中Tecplot中自定义公式规则见该文&#xff1a; Tecplot中使用公式

birt报表与现有系统的集成

与现有的系统结合有两种常见方式(其一) 1、使用Birt自带的runtime 把Birt-runtime-2.1.3.zip解压&#xff0c;把WebViewerExample 拷贝到% tomcat-Home%\webapps目录下。 把你做好的*..rptdesign 和*.rptconfig文件放于% tomcat-Home%\webapps\ report目录下 我们把刚刚创建的第…

it工程师和码农的区别_你是开发工程师、程序员还是码农?

Developers are from Mars, programmers are from Venus, so where are coders from?不管是CPPer&#xff0c;Javaer&#xff0c;还是PHPer等等&#xff0c;不少开发人员经历过这样的困惑&#xff1a;我到底是工程师(SDE&#xff0c;or Developer)&#xff0c;程序员(Programm…

Tecplot中如何提取水线面(自由表面)并绘图

1.导入CAS和DAT文件 file-->load data 2.绘制体积分数云图 contour-->phase 2 3.绘制等值表面 plot-->iso-surface 4.从等值面提取数据 data-->extract-->iso-surfaces 如果报错记得勾选iso-surfaces&#xff0c;再进行上一步操作 此时&#xff0c;可以看到…

Mobiscroll的介绍【一款兼容PC和移动设备的滑动插件】

Mobiscroll是一个用于触摸设备的日期和时间选择器&#xff0c;它的使用不会改变HTML5、PhoneGap以及混合应用的原生用户体验。作为一款jQuery滑动选择插件&#xff0c;用户可以自定义主题样式&#xff0c;为自己的移动项目UI组件添色。Mobiscroll支持所有主流平台&#xff1a;i…