2012-12-07 110 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