最近在练习英语听说,跟读VOA。资料在VOA英语网上下载的,在此感谢版主的收集资料。
不过,听的时候遇到两个小问题,现在用python解决,开始的时候还在网上找相关软件,完全忽略了python工具的强大,就这一点,也该记下来。
哪两个问题呢:一是VOA英语网上的文本有他们自己的模板,在txt后面加几行小尾巴,打印的时候很是碍眼;二是音频mp3中标题是统一命名,可惜我手机不识别喜闻乐见的文件名,只按文件的标题名排序,可惜了我的大华为手机的小bug。
分开来说:
一、txt文本的批处理掉文件小尾巴:
#coding:utf-8
import os
dir='D:/test/www.tingvoa.com' #下载解压后的文件,还没想过怎么支持中文路径,先用最省事的方式吧,手动改文件名
out='d:/test/out/aa.txt' #输出文件夹
#os.mkdir(out)
fo=open(out,'a')
for i in os.listdir(dir):
txt=i.split('.')[-1]
if txt!='txt':continue
with open(dir+'/'+i,'r')as fi:
lines=fi.readlines()[:-23] #文本尾巴的长度,简单就好
fo.writelines(lines)
代码只是功能性的,文件格式是模板造的,所以代码也简单到爆
二、MP3文件的标题重命名:首先感谢下pcode的代码,让我对文件认识有了更高的认识。
#coding:utf-8
import os
import struct
name=os.listdir('d:/test/20')
for n in name:
if n.split('.')[-1]!='mp3':continue
with open(n,'rb') as f:
f.seek(-128,2) #MP3最后128字节中保存了一些文件信息,了解更多看上面的pcode
data=f.read()
title=n.split('.')[0]
str=struct.pack('3s30s95s','TAG'.encode('utf-8'),title.encode('utf-8'),data[33:]) #struct挺好,将变量按格式组织在一起
#print(str) #struct.pack有一点,它需要byte格式。转byte格式查看这儿。
f.seek(0,0)
data=f.read()[:-128]
data=data+str
if not os.path.exists('d:/test/ooo/'):os.mkdir('d:/test/ooo/')
with open('d:/test/ooo/'+n,'wb') as f:
f.write(data)
python用来解决生活中的事情,方便很多,想想当初还为这些小事好一番百度,想找相关的软件,费了个劲。还是python好。