2013-02-07 4 views
3

ID3 태그를 읽고/변경하고 파일 크기에 대한 세부 정보를 얻음으로써 폴더의 모든 MP3 파일을 처리해야합니다. 최종 목표는 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는 과도한 것처럼 보입니다. 나는 또한 커스텀 클래스를 만드는 것을 고려하고있다. 그러나 아직 파이썬에서 충분한 경험이 없다. 내가 누락 된 모듈/모범 사례가 있습니까?

답변

2

필드 당 하나의 변수 인 하나의 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 
2

사전 목록이 나에게 더 적합합니다.

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'}] 

당신은 정렬이 같이 간단합니다 : 아마도 NamedTuples

sor = sorted(mp3s, key=lambda x: x['NAME']) 
0

목록? 튜플은 Python AFAIK에서 가장 적은 메모리를 소비하는 유형 중 하나 여야합니다.

+0

OP는 그가 fileds를 수정해야한다고 말합니다. 튜플은 테이블에서 벗어났습니다. NamedTuples이 내 첫 번째 선택이 아니라면 컬렉션 모듈은 최고 품질의 구조를가집니다. –

1

그냥 sqlite을 사용하지 않는 이유는 무료로 제공되는 것입니다.

내장 검색은 &이며 데이터베이스는 일회용이므로 관리해야 할 추가 프로세스가 있습니다.

코드가 개발되면 데이터에 특성을 더 추가 할 가능성이 높으며 그때까지는 사전 등이 관리하기 어려워 질 수 있습니다.

그것은 선택 데이터베이스를 볼 수 있도록하는 데 도움이

그래, 내 데이터는 좋아 보인다 생각 - 다음 부분은 쉽게해야합니다.

관련 문제