如何在Python中处理小网格数据?

2024-10-03 17:15:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要处理文件夹中的所有MP3文件,方法是读取/更改一些ID3标记,以及获取有关文件大小的详细信息等等。最终目标是构建一个RSS文件,这样这些MP3将成为一个定制的播客。我认为可能需要多达200个文件(行?)以及5到6条数据(列?)关于每个文件。需要读入所有数据,使用数据确定排序顺序,并构建rss/xml文件。不确定Python中处理数据的最佳方法。在

看到这个代码的想法为“字典字典”,但这看起来有点笨重?在

mydict = {'MP3_File_1.mp3': 
          {'SIZE': '123456789','MODDATE': '20120508', 'TRKNUM': '152'}, 
           'MP3_File_2.mp3': 
          {'SIZE': '45689654', 'MODDATE': '20120515', 'TRKNUM': '003'}, 
           'MP3_File_3.mp3': 
          {'SIZE': '98754651', 'MODDATE': '20130101', 'TRKNUM': '062'}}

无论是真正的数据库还是pyTables,似乎都太过分了。我也在考虑创建一个自定义类,但还没有足够的Python经验。我是否缺少模块/最佳实践?在


Tags: 文件数据方法标记文件夹size字典详细信息
3条回答

我将创建一个自定义类来包含一个MP3文件,每个字段一个变量。这样,您就可以轻松地编写函数来修改这些字段。然后我将为每个文件构造一个对象(使用文件名作为构造函数的参数,并使用构造函数填充字段),并将所有对象放入一个列表中。此类将包含排序对象所需的函数。最后,我将编写一个自定义函数,从该列表生成XML文件。在

这不是唯一的办法,但这是我要做的。在

class Mp3file(object):
    def __init__(self, filename):
        # read the file
        self.name = filename
        self.size = ...
        self.moddate = ...
        self.track_num = ...
        ...

    def to_xml(self):
        return ...

    def __lt__(self):
         ....
    def __eq__(self):
         ....
    ...

mp3list = []
for filename in directory:
    mp3list.append(Mp3file(filename))

def mp3list_to_xml(mylist):
    # write preamble
    for mf in sorted(mylist):
        x = mf.to_xml()
        # Add x to xml
    # write footer

为什么不直接使用sqlite它是免费捆绑的。在

您可以使用内置的排序和搜索功能,并且数据库是一次性的,因此需要管理额外的进程。在

另外,随着代码的发展,您可能希望向数据中添加更多属性,到那时dict等将变得不可管理。在

它有助于能够查看数据库选择和思考

Yeah, my data looks good - the next part should be easy.

对我来说,一份字典清单更有意义。在

mp3s = [
      {'NAME': 'lalala.mp3', 'SIZE': '123456789','MODDATE': '20120508', 'TRKNUM': '152'}, 
      {'NAME': 'lelele.mp3', 'SIZE': '45689654', 'MODDATE': '20120515', 'TRKNUM': '003'}, 
      {'NAME': 'lululu.mp3', 'SIZE': '98754651', 'MODDATE': '20130101', 'TRKNUM': '062'}]

如果您希望排序就这么简单:

^{pr2}$

相关问题 更多 >