【问题标题】:Python renaming media filesPython重命名媒体文件
【发布时间】:2015-08-10 23:27:36
【问题描述】:

我正在使用 ID3 库将我的文件重命名为包含歌曲标题的数据标签,以取出文件名中的数字和其他废话。好久没用python了。无论我很确定这是代码,但我没有得到任何输出,我的文件也没有更改名称。

def rename():
        location = "/media/martinstone/6EA41336A412FFEF/Users/Martin7/Desktop/Music/"
        for files in os.walk(location):
                for mfiles in files[2]:
                        if ".mp3" in mfiles:
                                path = location + mfiles
                                id3info = ID3(path)
                                os.rename(path, id3info['TITLE'])
                                print id3info['TITLE']
rename()

【问题讨论】:

  • 您为什么不尝试打印出文件列表?同样取决于您的操作系统,位置看起来可能是一个相对 URL,因此您需要根据您的工作目录检查它。
  • 看起来像是挂载在Linux上的Windows驱动,是绝对路径。
  • 我已经使用解释器控制台仔细检查了路径,以确保它正在打印以 .mp3 结尾的文件。问题出在之后的代码中

标签: python media id3


【解决方案1】:

您可以使用songdetails Python 包作为替代方案来完成这项工作。 Download and install 它的依赖关系。

这个脚本应该可以完成这项工作。

import os, songdetails

location = r'/Users/Mo/Music'
os.chdir(location)

for root, dirs, files in os.walk(location):
    for mp3s in files:
        if mp3s.endswith('.mp3'):
            song = songdetails.scan(mp3s)
            song_name="{}.mp3".format(song.title)
            print ("{} will be renamed to {} ".format (mp3s,song.title))
            os.rename(mp3s, song_name)

干杯。

【讨论】:

    【解决方案2】:

    这将重命名location指定目录及其所有子目录中所有以.mp3结尾的文件。

    import os
    
    
    def rename_mp3_files(location):
        for root, dirs, files in os.walk(location):
            for m_file in files:
                if m_file.endswith('.mp3'):
                    old_filepath = os.path.join(root, m_file)
                    id3info = ID3(old_filepath)
    
                    new_filename = '{}.mp3'.format(id3info['TITLE'])
                    new_filepath = os.path.join(root, new_filename)
    
                    os.rename(old_filepath, new_filepath)
    
                    print id3info['TITLE']
    
    
    location = "/media/martinstone/6EA41336A412FFEF/Users/Martin7/Desktop/Music/"
    rename_mp3_files(location)
    

    仅供参考,有一些工具可以为您做到这一点。不一定要阻止您自己编写代码,但以防万一您不知道:)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-11
      • 1970-01-01
      • 1970-01-01
      • 2013-12-12
      • 2010-10-13
      • 2019-01-15
      • 1970-01-01
      相关资源
      最近更新 更多