我有一个音乐目录,其中包含专辑文件夹以及每个级别上的单个歌曲。我如何遍历所有这些文件也是以不同格式(mp3,wav等)编码的?另外有没有一种方法可以将它们重命名为一种更符合我喜欢的正则表达式的格式?如何遍历文件并在Python中重命名它们
感谢
我有一个音乐目录,其中包含专辑文件夹以及每个级别上的单个歌曲。我如何遍历所有这些文件也是以不同格式(mp3,wav等)编码的?另外有没有一种方法可以将它们重命名为一种更符合我喜欢的正则表达式的格式?如何遍历文件并在Python中重命名它们
感谢
os.walk
的文件去了在目录及其子目录,递归os.rename
重新命名他们文件的编码这里不支付任何作用,我认为。当然,你可以检测它们的扩展名(使用os.path.splitext
),然后根据它做一些事情,但只要你只需要重命名文件(即操纵它们的名字),内容就不重要。
我在我写的程序中使用这段代码。我用它来获取图像文件的递归列表,其调用模式类似于re.compile(r'\.(bmp|jpg|png)$', re.IGNORECASE)
。我想你应该已经明白了。
def getFiles(dirname, suffixPattern=None):
dirname=os.path.normpath(dirname)
retDirs, retFiles=[], []
for root, dirs, files in os.walk(dirname):
for i in dirs:
retDirs.append(os.path.join(root, i))
for i in files:
if suffixPattern is None or \
suffixPattern.search(i) is not None:
retFiles.append((root, i))
return (retDirs, retFiles)
有了这个列表之后,应用重命名规则会很容易。 os.rename
是你的朋友,请参阅http://docs.python.org/library/os.html。
我通常会收钱来编写类似的东西。这里有一些和我在Perl中写的东西类似,你至少可以看到大概的想法:https://github.com/eberle1080/oggsync –
@Chris:ouch,300行Perl遍历和重命名文件? –
不,300行要从一种格式转码到另一种格式。这不是OP之后的事情吗? –