Windows Python十六进制到Ascii

Windows Python十六进制到Ascii,windows,python-2.7,Windows,Python 2.7,如何使Python在文件中循环并将十六进制转换为ascii?问题是,当Python在文件中循环时,它会看到\n,而不会解析文件 import binascii fo = open('test.doc', 'r') print fo.readlines() dataFormatHex = binascii.a2b_hex ("%s" %fo) output = "" for char in dataFormatHex: if char in string.printable: ou

如何使Python在文件中循环并将十六进制转换为ascii?问题是,当Python在文件中循环时,它会看到
\n
,而不会解析文件

import binascii

fo = open('test.doc', 'r')

print fo.readlines()

dataFormatHex = binascii.a2b_hex ("%s" %fo)

output = ""
for char in dataFormatHex:
    if char in string.printable: output += char
    else: output += "."
print "\n" + output
错误跟踪是:

Traceback (most recent call last):
  File "C:\Python27\hex2ascii-looper.py", line 7, in <module>
    dataFormatHex = binascii.a2b_hex ("%s" %fo)
TypeError: Non-hexadecimal digit found
回溯(最近一次呼叫最后一次):
文件“C:\Python27\hex2ascii looper.py”,第7行,在
dataFormatHex=binascii.a2b_hex(“%s”%fo)
TypeError:找到非十六进制数字
下面是test.doc中的内容:

14000000370000000270000002600006D000008E00000004000000002000000000000000000001D00000003000000041000004D00000580000000940000008800005E000004F00000400000036000007B0000066000000005A00004200000000000000003000002F00000043000004800000000000000000000C00000490000044000002000000200000018000003800001000001000000000000000000000064000080000000070000000 6C0000008700000650000000000F0000061000005D000001F00000210000190000079000006900008A000008D000002A000008C0000073000000033000003B000006800000006F00008000000000000E00000002000004A000005900000390000070000001C00000012000000000001E00000830000060000006A000000750000A000007A00000230000000050000000000E00000700000000000004000055000007E0000000000000000B07000000840000005200007700000900000470000093000000076000007100000400006000000072000000002000000053000001A00000900000007D000016010000670000008b000000630000000450000002000000350000070000005b0000005000500000000091000020000000860000300300300000000D000007F00000560000002400000540000089000006E0000800000950000008F000040C000007800000002000000570000003D0000000B000001000000013000000250000032000000082000004E000005C000003F000000080000004B00000280000005F000003C00000510000003E000000FFFF 310032002D000310038002D003100340005F004D0065007800690063006F00200006D0061006300680069006E0065007300200006F0075007400200006F006600600064006100740065002D00650077002E0078006C0073007800000D000320000000000000000000000031322D31382D3345FD6576869636D618696E6576F757420F66206464746E672E672E786C782E608000000000EFBE000000000000000000000000000000000000000000000000000000000310032002D000310038002D003100340005F004D0065007800690063006F00200006D0061006300680069006E0065007300200006F0075007400200006F00660064006100740065002D00650077002E0078006C00730078002E006C006E006B00004000000000 63062074006E005F0070007900740068006F006E005F003000350020002D000200053007006100740065006D0065006E00740073002C00200044006F00630075006D0065006E007006100740069006F006E002C00200006E0064002000480065006C0070002E06006C007600000F2003200000000000000006362746E5F707974686F6E5F303520205374617461746D656E56E742C0446F63756E6756E74696E6E6E6E6E6E207070707070707070707070707756E6E6E6E6E6E6E6E6E6E6E6E6E070707070707070742048656C702E666C762E6C6E6B0000A6000A08000400EFBE0000000000000000000000000000000000000000000000000000000000000063006200074006E005F0070007900740068006F006E006E005F003000350020000D000200053007400006100740065006D0065006E00740073002C002000044006F00630075006D0065006E00740006010000610070006E0060000E00600006E0060000E0060000E0060006C0060006C0066006C0066006006C006C0066006C0070006C0060006C0060000C0066006C0060000C006C0066006C0060000C0066006C006C006600006B0000004C000000

只需在字符串上使用
.strip()
,它将删除尾随的
\n

import binascii

f = open(yourFile)
for line in f.readlines():
    print(binascii.a2b_hex("%s" % (line.strip()))
f.close()