从文件读取时没有得到十六进制值的ord()

时间:2016-08-15 16:12:48

标签: python python-2.7

假设a = '\x00\x01\x02'

现在当我通过循环ord()使用a时,我得到了我想要的输出。

程序:

for i in a:
    ord(i)

输出:

0
1
2

但是现在当我通过读取文件来做同样的事情时,我一直得到TypeError。

这就是我所做的 - 我创建了一个名为 abc.txt 的文件。在 abc.txt 内,与a的字符串相同,为'\x00\x01\x02'

这是我编写的用于浏览文件内容的程序:

file = open('abc.txt', 'r')

for i in file:
    ord(i)

file.close()

这是我得到的错误:

TypeError: ord() expected a character, but string of length 15 found

我哪里错了?当我将字符串分配给变量时,它完全正常,但是当我从文件中读取时执行相同的操作时,我一直收到错误。

修改

我尝试过Morgan Thrapp的解决方案并且有效。但现在我有另一个问题。当我循环遍历a时,我得到字符串中给出的十六进制值的ord()。但是当我按照Morgan的方法进行操作时,我会在字符串中获得单个字符的ord()。在循环时,程序不会将其视为字符串中的十六进制值。 我也更改了标题,以便更清楚我想要做什么。

1 个答案:

答案 0 :(得分:2)

问题在于你逐行遍历文件,但字符串逐字符。

最简单的方法是使用第二个嵌套循环,或map

with open('abc.txt') as input_file:
    for line in input_file:
         for character in line:
             print(ord(character))