gpt4 book ai didi

Python oggenc 脚本

转载 作者:行者123 更新时间:2023-11-28 18:53:34 27 4
gpt4 key购买 nike

我想编写一个 python 脚本(是的,不是 Bash),它将使用 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:
if fnmatch.fnmatch(name, '*.flac'):

我有点想用

os.system("bash -c %s" % command)

在 if 之后但那行不通,说是

ERROR: No input files specified. Use -h for help.

我想我必须在我的命令中使用名称吗?

编辑我的文件结构看起来像这样:

-- test
-- test1
-- test1.flac
-- test2.flac
-- test2
-- test3.flac
-- test1.flac

而且我希望在同一个目录下将那些flac文件转换成ogg,基本上我想自动化

cd /somedir/
oggenc -q7 *.flac
cd ..
cd /someotherdir/
oggenc -q7 *.flac

这样我就不用总是进入子目录了!

回答:

@larsmanns 非常感谢,只是需要做一些调整:

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,所以对于每个元组做 ...无论如何,再次感谢,剩下的就简单了!

顺便说一下

我完成了脚本,您可以在这里找到它:musico

最佳答案

使用 subprocess调用外部命令的模块,提供更详细的控制:

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 关键字参数在执行命令之前更改为指定的目录。通配(文件名模式匹配)已由 fnmatch 完成,因此需要在两者之间调用 shell。

您可以使用os.remove 删除文件;我还没有把它放在例子中。此外,上述代码段未经测试。

关于Python oggenc 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7900178/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com