2012-12-07 60 views
0

我有兩個文件夾,每個文件夾包含196個文件,它們都是('\xae\xae\xb4\x9e\x8f\x9f\xba\xc1\xd5\xbd\xcd\xa1\xb7\')格式。我試圖讀取這些數據將其轉換爲人類可讀的形式。我想合併2文件夾的兩個文件的數據。ord在循環中執行函數

我試過這個使用ord()函數,但試圖檢索單個文件與預期的輸出,我得到錯誤的值。我試圖提取讀取的第一個元素,但我得到的輸出是所有文件的最低值。 這裏是我的代碼:

for file_name, files in izip(list_of_files, list_of_filesO): 
    fi = open(file_name,"r").read() 
    fo = open(files,"r").read() 
    f = [open("/home/vidula/Desktop/project/ori_tri/input_%i.data" %i,'w')for i in range(len(list_of_files))] 
    read = [ord(i) for i in fi] 
    reado = [ord(i) for i in fo] 
    zipped = zip (read,reado) 
    print read[0] 

預期輸出:

125,25 
36,54 
98,36 
78,56 

感謝您的期待。

+0

「他們都在('\西航\西航\ XB4 \ x9e \ X8F \ x9f \ xba \ xc1 \ xd5 \ xbd \ xcd \ xa1 \ xb7 \')格式。「我完全不知道你的意思。如果我用記事本打開文件,我會看到引號和反斜槓嗎?這一切會是一個長串嗎? –

+0

它是一個十六進制文件,不能在記事本中讀取。 – shreya

回答

0
[ord(i) for i in fi] 

對文件進行迭代遍歷文件的各行。這聽起來像你想一次迭代一個角色。爲此,您可以明確地嘗試將每個文件作爲單個塊,然後遍歷結果字符串。

如果你不想在內存中的整個文件的內容,你可以嘗試做一個自定義的迭代器,如:

def each_char_of(a_file): 
    while True: 
     x = a_file.read(1) 
     if not x: return 
     yield x 
+0

對不起,先生,我是編程新手,我不知道該怎麼辦?我有兩個目錄,每個包含196個文件,在每個文件中,以十六進制格式顯示121個值,我嘗試使用ord()將十六進制轉換爲int,並將其寫入新的輸出文件。每個輸出文件應該在新目錄中有2個輸入文件(如123,456 56,23 89,56)和196個文件的121個值。但是我在新目錄的每個文件中獲得了196個值。你能建議我做什麼? Thakyou – shreya