2011-02-02 167 views
0

我有一个python脚本,运行在以下几种方式的三个文件 align.py * .wav * .txt * .TextGrid 但是,我有一个目录充满了我想要的文件依次通过。原作者建议创建一个shell脚本来遍历这些文件。 关于循环的棘手部分是,我需要一次匹配三个文件,并使用三种不同的扩展名来使脚本正确运行。 任何人都可以帮助我弄清楚如何创建一个shell脚本来遍历文件目录,根据名称(有三种不同的扩展名)匹配其中的三个,并在每个三元组上运行python脚本? 谢谢!UNIX shell脚本来调用python

+1

如果每个TextGrid文件都有一个wave和txt文件,那么我只需修改python脚本来推断这两个文件的名称,并且只传递* .TextGrid列表。你可以改变python脚本吗? – DSimon 2011-02-02 21:12:42

+0

请添加一些示例文件,以及您希望如何处理它们。你的问题没有充分描述你在找什么。 – chmullig 2011-02-02 21:15:02

回答

0

你可以使用glob.glob只列出wav文件,然后构建subprocess.Popen调用就像这样:

import glob 
import os 
import subprocess 

for wav_name in glob.glob('*.wav'): 
    basename,ext = os.path.splitext(wav_name) 
    txt_name=basename+'.txt' 
    grid_name=basename+'.TextGrid' 
    proc=subprocess.Popen(['align.py',wav_name,txt_name,grid_name]) 
    proc.communicate() 
3

假设你正在使用bash,这里是一个班轮:

for f in *.wav; do align.py $f ${f%\.*}.txt ${f%\.*}.TextGrid; done