如何循环遍历文件并在Python中重命名它们

时间:2011-10-25 19:05:47

标签: python filesystems directory-traversal

我有一个音乐目录,其中包含相册文件夹以及每个级别的单个歌曲。如何遍历所有这些以不同格式(mp3,wav等)编码的文件?另外有一种方法我可以将它们重命名为一种格式,使用正则表达式更符合我的喜好吗?

由于

2 个答案:

答案 0 :(得分:7)

  • os.walk以递归方式遍历目录及其子目录中的文件
  • os.rename重命名

我认为文件的编码不起作用。当然,你可以检测它们的扩展名(使用os.path.splitext)并根据它做一些事情,但只要你只需要重命名文件(即操纵它们的名字),内容就不重要了。

答案 1 :(得分:1)

我在我写的程序中使用这段代码。我使用它来获取图像文件的递归列表,调用模式类似于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