2013-06-12 80 views
10

我發現自己不得不使用python腳本來訪問web存檔。從Python打開megawarc存檔時出錯

我所擁有的是一個來自http://archive.org/details/archiveteam-fanfiction-warc-11的'megawarc'網絡歸檔文件。我需要使用在https://github.com/alard/megawarc處找到的python腳本來取消這個megawarc。

我試圖運行'restore'命令,並從第一個鏈接獲取所需的三個文件(FILE.warc.gz, FILE.tar和FILE.json.gz)。

我安裝了python 2.7和3.3。

-------------- --------------更新

我已經跑了兩個這種方法..

python megawarc restore FILE 

而且這種方法..

請確保您有在同一個目錄中的文件megawarc和ordereddict.py,你要轉換的文件。 重命名文件megawarc到megawarc.py 打開一個python控制檯使用Python 2.7這個目錄

Type the following code (line by line) : 

import sys 
sys.argv = ['megawarc','restore','FILE'] 
import megawarc 
megawarc.main() 

在,這就是我得到..

c:\Python27>python megawarc restore FILE 
Traceback (most recent call last): 
    File "megawarc", line 563, in <module> 
main() 
    File "megawarc", line 552, in main 
mwr.process() 
    File "megawarc", line 460, in process 
self.process_entry(entry, tar_out) 
    File "megawarc", line 478, in process_entry 
entry["target"]["offset"], entry["target"]["size"]) 
    File "megawarc", line 128, in copy_to_stream 
raise Exception("End of file: %d bytes expected, but %d bytes read." % (buf_size, l)) 
Exception: End of file: 4096 bytes expected, but 236 bytes read. 

有沒有別的東西,我很失蹤?

我有以下的文件都在 C:\ python27

FILE.megawarc.json.gz 

FILE.megawarc.tar 

FILE.megawarc.warc.gz 

megawarc 

ordereddict.py 

這是某種類型的損壞文件的錯誤?有什麼我失蹤?

+1

你嘗試了什麼,你得到了什麼錯誤? –

+13

Pssh,沒有人有錯誤的編程思維。簡單地說,你一直試圖解決編程問題意味着你可以成爲一名優秀的程序員。這都是關於解決問題的。 –

+0

那麼你執行了你給的Python腳本?你打開了一個命令shell來運行它,以便你能看到錯誤信息嗎? – duffymo

回答

6

您提供的第二個鏈接,有兩個重要的文件:

megawarc 
ordereddict.py 

的可執行腳本是megawarc。要運行它,您必須在外殼中啓動它。

python megawarc restore FILE 

或者,如果您使用的是基於UNIX的系統。你可以做

chmod +x megawarc 

爲了讓megawarc腳本可執行財產,然後用

./megawarc restore FILE 

這裏運行,FILE是,如果3個文件,你必須是你應該鍵入實際名稱FILE.warc.gzFILE.tar,和FILE.json.gz。如果需要,您必須通過通用前綴將此參數更改爲3個輸入文件。

編輯:

好吧,我發現,如果你沒有一個標準的shell啓動的命令行腳本,將工作的替代品。 你所要做的是:

  • 請確保您有文件megawarc,並在同一目錄ordereddict.py,你要轉換的文件。
  • 文件megawarc重命名爲megawarc.py
  • 打開一個python控制檯這個目錄
  • 鍵入下列代碼(逐行)在:

    import sys 
    sys.argv = ['megawarc','restore','FILE'] 
    import megawarc 
    megawarc.main() 
    

這應該工作,我剛剛嘗試過。 希望它會有所幫助。

+1

由於FILENAME似乎是文件名前綴,而不是實際的文件名,令人困惑的警告。 – kampu

+0

>>> python megawarc restore test SyntaxError:無效的語法 >>> –

+0

嗯,試過(謝謝!!),我得到這個。 –