Python oggenc脚本
我想编写一个python脚本(不是Bash而是Yes),它将使用flac文件,并使用oggenc对它们进行编码,然后在编码成功后删除flac文件 到目前为止,我有:Python oggenc脚本,python,Python,我想编写一个python脚本(不是Bash而是Yes),它将使用flac文件,并使用oggenc对它们进行编码,然后在编码成功后删除flac文件 到目前为止,我有: import os, sys import fnmatch command = 'oggenc -q7 *.flac' def main(): for root, dirs, files in os.walk('/home/wagnerf/test'): for name in files:
import os, sys
import fnmatch
command = 'oggenc -q7 *.flac'
def main():
for root, dirs, files in os.walk('/home/wagnerf/test'):
for name in files:
if fnmatch.fnmatch(name, '*.flac'):
我有点想用
系统(“bash-c%s”%命令)
在if之后,但那不起作用,比如
错误:未指定输入文件。使用-h获得帮助
我想我必须在命令中使用这个名字
编辑
我的文件结构将如下所示:
-- test
-- test1
-- test1.flac
-- test2.flac
-- test2
-- test3.flac
-- test1.flac
我想把那些flac文件转换成同一个目录下的ogg,基本上我想自动化
cd /somedir/
oggenc -q7 *.flac
cd ..
cd /someotherdir/
oggenc -q7 *.flac
这样我就不必总是进入子目录
回答:
@拉斯曼非常感谢你,只是需要做一些调整:
from fnmatch import fnmatch
import os, sys
import subprocess
def main():
for root, dirs, files in os.walk('/home/wagnerf/test'):
flacs = [f for f in files if fnmatch(f, '*.flac')]
if flacs:
for file in flacs:
cmd = 'oggenc', '-q7', '%s' % file
subprocess.check_call(cmd, cwd=root)
flacs返回一个列表,我们需要在每个文件中使用oggenc,所以对于每个元组都要。。。
无论如何,再次谢谢,剩下的很简单
顺便说一句
我完成了脚本,您可以在这里找到它:使用模块调用外部命令,它提供了更详细的控制:
from fnmatch import fnmatch
import os
import subprocess
def main():
for root, dirs, files in os.walk('/home/wagnerf/test'):
flacs = [f for f in files if fnmatch(f, '*.flac')]
for f in flacs:
cmd = ['oggenc', '-q7', f]
subprocess.check_call(cmd, cwd=root)
执行命令之前,cwd
关键字参数将更改为指定目录。globbing(文件名模式匹配)已经由fnmatch
完成,因此需要在两者之间调用shell
您可以使用
操作系统删除文件。删除;我还没有把它放在例子中。另外,上面的代码段未经测试。为什么不通过os.system(“oggenc-q7%s”%os.path.join(root,name))
?它将与默认shell一起运行,通常是bash。@wagner felix:'%s'%file
与刚才的file
完全相同。编辑我的答案,以更简洁的方式反映您的变化;我不知道oggenc
工具,所以我假设它可以处理每个命令的多个文件。@wagner felix,那么你就在一个空目录中了。您可能需要检查flacs
是否为非空,我会将其添加到答案中。