UNIX shell脚本调用python
我有一个Python脚本,它的运行方式是处理三个文件,命令是这样的:align.py *.wav *.txt *.TextGrid
。不过,我有一个文件夹里装满了文件,我想要逐个处理这些文件。原作者建议我写一个shell脚本来循环处理这些文件。
这个循环的难点在于,我需要同时匹配三个文件,它们的名字要相同,但扩展名不同,这样脚本才能正确运行。有没有人能帮我想想怎么写一个shell脚本,能够遍历一个文件夹,找到三个文件(名字相同但扩展名不同),然后对每一组三个文件运行这个Python脚本?谢谢!
2 个回答
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