【问题标题】:ord function execution in loopord函数循环执行
【发布时间】:2012-12-07 06:45:43
【问题描述】:

我有两个文件夹,每个文件夹包含 196 个文件,它们都是 ('\xae\xae\xb4\x9e\x8f\x9f\xba\xc1\xd5\xbd\xcd\xa1\xb7\') 格式。我正在尝试读取这些数据并将其转换为人类可读的形式。我想合并2个文件夹的两个文件的数据。

我使用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

谢谢你的期待。

【问题讨论】:

  • “它们都是 ('\xae\xae\xb4\x9e\x8f\x9f\xba\xc1\xd5\xbd\xcd\xa1\xb7\') 格式。”我完全不明白你的意思。如果我在记事本中打开您的文件,我会看到引号和反斜杠吗?会不会都是一长串?
  • 这是一个十六进制文件,无法在记事本中读取。

标签: python zipper


【解决方案1】:
[ord(i) for i in fi]

遍历文件会遍历文件的行。听起来您想一次迭代一个角色。为此,您可以尝试将每个文件显式地reading 作为单个块,然后遍历生成的字符串。

如果您不希望整个文件内容在内存中,您可以尝试制作自定义迭代器,例如:

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

【讨论】:

  • 对不起先生,我是编程新手,我不知道该怎么办?我有 2 个目录,每个目录包含 196 个文件,在每个文件中有 121 个十六进制格式的值,我正在尝试使用 ord() 将十六进制转换为 int。并将其写入新的输出文件。每个输出文件应该有 2 个输入文件的 121 个值(如 123,456 56,23 89,56)和新目录中的 196 个文件。但是我在新目录的每个文件中得到 196 个值。你能建议我做什么吗?他交
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-24
  • 1970-01-01
  • 2021-10-22
  • 1970-01-01
  • 1970-01-01
  • 2019-11-16
相关资源
最近更新 更多