2017-05-02 5 views
0

にこのファイル形式を読み込むための任意の方法は、(あなただけの書式設定を見ることができるように、私は多くのことをトリミング)誰もが前に見たもののように、このファイル形式外観を行います。はありPythonの

<REAPER_PROJECT 0.1 "5.29/x64" 1493370961 
    RIPPLE 0 
    GROUPOVERRIDE 0 0 0 
    AUTOXFADE 1 
    ENVATTACH 1 
    <TRACK {1157FED1-D15B-4B2B-A89E-BF3696E69030} 
    NAME "Station VT" 
    PEAKCOL 29129222 
    <ITEM 
     PLAYRATE 1 1 0 -1 0 0.0025 
     CHANMODE 0 
     GUID {2493C675-0CB3-433B-B8CD-D661290D7980} 
     <SOURCE WAVE 
     FILE "Audio\04-KTKE VT-glued-131121_1022 render 001.wav" 
     > 
    > 
    <ITEM 
     PLAYRATE 1 1 0 -1 0 0.0425 
     CHANMODE 0 
     GUID {2493C123-0C32-466B-B8CD-D66129123123} 
     <SOURCE WAVE 
     FILE "Audio\131343121_1022 render 001.wav" 
     > 
    > 
    > 
> 

私は」このファイルを生成するプログラムのベンダーに連絡して、ファイルの生成方法を教えてもらえるかどうかを確認しましたが、答えを返すかどうかはわかりません。私はそれが構造の構造なのか、そういうものなのかな?私は他の多くの言語に精通していないと思います。

最終的にはこれをPythonに読み込み、可能であればデータを変更してから、ファイルに書き戻したいと思います。さもなければ、私はちょうどそれを1行ずつ解析し、私が必要とする変更を行うことは不可能ではないと思うが、既に存在する読者があればはるかに簡単だろう。

EDIT

私はそれを読んで私は読者を有する、同じフォーマットでデータを出力する必要があることを述べておく必要があり

/ライタが理想的であろう。

+1

必ずホイールを再発明したされ、このファイル形式を所有している人、醜い車輪。 xmlの使用を依頼してください。 – swatchai

+0

@swatchai hmm ...私はそれを疑っていた。 XMLには近いが、それほどではない。なぜ彼らがこのルートに行ったのか分かりませんが、彼らはそうしました。残念ながら、このフォーマットは、多くのスタジオで使用されているプロのオーディオレコーディングソフトウェアであり、おそらくそれを変更する大きな理由がないため、いつでも変更されるとは思わない。 – Mike

答えて

1

あなたは、例えば、XMLに変換することができます:

def to_XML(): 
    with open('test/REAPER_in.txt') as f_in,\ 
     open('test/REAPER.xml', 'w') as f_out: 

     tags = [] 
     while True: 
      line = f_in.readline()[:-1].strip(' ') 
      if not line: break 

      if line.startswith('<'): 
       eot = line.find(' ') 
       if eot > -1: 
        tag = line[1:eot] 
        data = line[eot+1:].replace('"', '') 
        f_out.write('<%s data="%s">\n' % (tag, data)) 


       else: 
        tag = line[1:] 
        f_out.write('<%s>\n' % (tag)) 

       tags.append(tag) 

      elif line.startswith('>'): 
       tag = tags.pop() 
       f_out.write('</%s>\n' % tag) 

      else: 
       eot = line.find(' ') 
       tag = line[:eot] 
       data = line[eot+1:].replace('"', '') 
       f_out.write('<%s>%s</%s>\n' % (tag, data, tag)) 

出力

<REAPER_PROJECT data="0.1 5.29/x64 1493370961"> 
<RIPPLE>0</RIPPLE> 
<GROUPOVERRIDE>0 0 0</GROUPOVERRIDE> 
<AUTOXFADE>1</AUTOXFADE> 
<ENVATTACH>1</ENVATTACH> 
<TRACK data="{1157FED1-D15B-4B2B-A89E-BF3696E69030}"> 
<NAME>Station VT</NAME> 
<PEAKCOL>29129222</PEAKCOL> 
<ITEM> 
<PLAYRATE>1 1 0 -1 0 0.0025</PLAYRATE> 
<CHANMODE>0</CHANMODE> 
<GUID>{2493C675-0CB3-433B-B8CD-D661290D7980}</GUID> 
<SOURCE data="WAVE"> 
<FILE>Audio\04-KTKE VT-glued-131121_1022 render 001.wav</FILE> 
</SOURCE> 
</ITEM> 
</TRACK> 
</REAPER_PROJECT> 
+0

それで、唯一の問題は、ファイルを元の形式に戻す必要があるということです。しかし、書式を知っている限り、それほど難しくありません。最終的に誰かがフォーマットを認識してくれることを期待していましたが、XMLのような標準化されたものを使用するのではなく、開発者が作成したカスタムフォーマットのようです。 – Mike

+0

申し訳ありません私は同じフォーマットで出力する必要があることをはっきりとはっきりしませんでした - もっと明確に述べるためにEDITを追加しました。あなたの提案をありがとう! – Mike

+0

XMLパーザを使って同じ形式で出力することは可能です。それが努力する価値があるかどうかによって異なります。 – stovfl

関連する問題