UNIX shell 脚本调用 Python

2024-09-27 18:17:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python脚本,它按以下方式在三个文件上运行 对齐.py*.wav*.txt*.TextGrid 但是,我有一个目录,里面装满了要循环使用的文件。原作者建议创建一个shell脚本来遍历文件。 循环的棘手之处在于,我需要一次匹配三个具有三个不同扩展名的文件,这样脚本才能正确运行。 有谁能帮我弄清楚如何创建一个shell脚本来遍历一个文件目录,根据文件名匹配其中三个(具有三个不同的扩展名),并在每个三元组上运行python脚本? 谢谢!在


Tags: 文件py目录txt脚本文件名方式shell
2条回答

可以使用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()

假设您使用的是bash,下面是一行代码:

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

相关问题 更多 >

    热门问题