2017-05-02 56 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

誰擁有這個文件格式肯定已經重新發明輪子的人,一個醜陋的輪子。要求他們使用xml。 – swatchai

+0

@swatchai嗯...我想知道。它接近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

對不起,我不是更清楚,我需要以相同的格式輸出 - 我添加了一個編輯來更清楚地說明。感謝您的建議! – Mike

+0

可以使用「XML解析器」以相同的格式輸出。取決於是否值得努力。 – stovfl

相關問題