python版的读取声音文件到常量数组

摘要:
通常,在播放声音文件时,我们会通过脚本读取所有声音文件,将它们放入数组中,然后生成int索引。这样,我们不会直接传递声音名称,而是播放音乐(MUICS_BG_1}),播放声音(SE_DOG);无论声音格式如何更改,代码都不需要更改。以前,它是用Perl编写的。这一次,它被更改为Python版本,以保持与其他版本的一致性。似乎没有什么不同。

    通常我们播放声音文件的时候会通过脚本读取所有的声音文件,然后放到数组里面,然后生成int型的索引,这样播放的时候就不直接传声音名字了,

而是这样playMusic( MUICS_BG_1 }, playSound( SE_DOG ); 这样无论声音格式如何变化,代码都无需改变。

之前都是Perl写的,这次为了和其他人保持一致改成python版的了,貌似没啥区别。贴代码备份

总目录media,下列 video, music, sound 三个目录,分别是视频,背景音和音效


#Auther: lancer
#Data: 2011-6-7
#Function: Get name of all media files from folder and process it, then write to another file as array format.
#Version: 1.00


#Modified
#Version: 1.01
#Data: 


import os
import re
import shutil


media_path = "C:\\workspace\\bada\\PigeonSquadron\\trunk\\code\\res\\media\\"
to_process_file = "C:\\workspace\\bada\\PigeonSquadron\\trunk\\code\\src\\native\\inc\\bada\SoundEngine.h"


index_prefix = '#define '
max_suffix = '_MAPPING_COUNT'


print media_path




code_array_list = []


def add_define(name, filelist):
index = 0
code_array_list.append(index_prefix + '' + 'SOUND_NONE  ' + str(-1) + '\n')
for file in filelist:
if not re.match('.svn\Z', file):
file = name + '_' + file.replace(' ','')
file = re.sub('(.mp3|.aac|.wma|.m4a|.xmf|.3ga|.mmf|.mid|.wav|.amr|.mp4)\Z', '', file)
file = file.upper()
file = index_prefix + file + ' ' + str(index) + '\n'
code_array_list.append(file)
index += 1
count = index_prefix + name.upper() + max_suffix + ' ' + str(index) + '\n\n'
code_array_list.append(count)

#static char* s_videoFiles[ VIDEO_MAPPING_COUNT ] =
#{
#"badaBI.mp4",
#};
def add_array(name, filelist):
  start = 'static char* s_' + name + 'Files[ ' + name.upper() + max_suffix + ' ] = ' + '\n{\n'
  end = '};\n\n'
  code_array_list.append(start);
  for file in filelist:
  if not re.match('.svn\Z', file):
  code_array_list.append('  "' + file + '",\n');
  code_array_list.append(end);
  
def process_folder(name):
filelist = os.listdir(media_path+name)
#print filelist
add_define(name, filelist)
add_array(name, filelist)

#read files from media folder and compose to list
list_files = os.listdir(media_path)
#cmd = "dir /A-D /B"
#list_file = os.popen(cmd).readlines();
#print list_files
for folder in list_files:
if folder=='sound' or folder=='music' or folder=='video':
#print "found path:"+folder
process_folder(folder)
else:
print "useless folder: " + folder

#for line in code_array_list:
#print line


file_to_write = 'temp.txt'
ignore_input = False
#open code file that include sound list and replace it
readf = file(to_process_file, 'r') # open for read
writef = file(file_to_write, 'w') # open for write
while True:
line = readf.readline()
if len(line) == 0: # Zero length indicates EOF
break
#print line,
if not ignore_input:
writef.write(line) # write text to file
if re.match('\A//# sound list to be processed start', line):
ignore_input = True
else:
if re.match('\A//# sound list to be processed end', line):
ignore_input = False
for item in code_array_list:
writef.write(item)
writef.write(line) # write text to file
# Notice comma to avoid automatic newline added by Python
readf.close() # close the file
writef.close();


shutil.move(file_to_write, to_process_file)

免责声明:文章转载自《python版的读取声音文件到常量数组》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇通过yum升级gcc/g++至版本4.8.2Java项目案例之---计算公司员工的工资(面向对象复习)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

pgAdmin4

简介 pgAdmin4 是开源数据库 PostgreSQL 的图形管理工具,是桌面版图形管理工具pgAdmin3 的重写,遵循 PostgreSQL协议 是开源、免费、可商用的。pgAdmin4 是python开发的web应用程序,既可以部署为web模式通过浏览器访问,也可以部署为桌面模式独立运行。 以下基于: pgadmin 4.15 + python...

python之fabric(二):执行模式(转)

执行模式 执行模式可以让你在多个主机上执行多个任务。 执行策略: 默认fabric是单个有序地执行方法,其行为如下:       1. 创建一系列任务,通过fab任务执行要执行的任务;       2. 根据主机列表定义,去执行每一个任务;       3. 没有主机定义的任务,将在本地执行一次。 如: from fabric.api import run...

linux下执行python错误: bad interpreter: No such file or directory

 /usr/bin/python^M: bad interpreter: No such file or directory python文件编码格式问题,需要将dos文件格式修改为unix文件格式,修改方法如下: 用如下命令查看文件格式 :set ff 或 :set fileformat 可以看到如下信息 fileformat=dos 或 filefor...

第15.36节 PyQt(Python+Qt)入门学习:containers容器类部件QFrame框架部件介绍

一、概述 容器部件就是可以在部件内放置其他部件的部件,在Qt Designer中可以使用的容器部件有如下: 容器中的Frame为一个矩形的框架对象,对应类QFrame,QFrame类是PyQt中带框架部件的所有类的基类,如菜单、进度条、Label标签等。QFrame类除了派生子类外,也可以直接用于创建没有任何内容的简单占位符框架,用于占用一部分空间。...

Linux下安装Python3.xx个人解析

一、环境准备 提示:在系统的任何目录下都可以进行如下环境配置操作。 1、 yum install openssl -y yum install openssl-devel -y   这两个文件的安装是为了配置pip3,没有这步操作,后续pip3可能出现错误:ImportError: cannot import name 'HTTPSHandler'  ...

1、PyCharm的下载、安装

PyCharm 是python编辑器中,比较顺手的一个。而且可以跨平台,在macos和windows下面都可以用。 (1)安装依赖-JDK 因为pycharm(python IDE)是用Java编写的,所以必须要安装JDK才可以运行。 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/...