Python从文件中读取十六进制数并写入另一个文件&引用;无效文字“;在';int';分配

Python从文件中读取十六进制数并写入另一个文件&引用;无效文字“;在';int';分配,python,hex,literals,Python,Hex,Literals,/dev/input/event0:0003 0001 000081a5 应该成为 sendevent 0003 0001 000081a5 在新文件中 代码是 import sys import fileinput prefix = 'sendevent ' inputline = None complete = None part1len = 0 part1 = None part2 = None num1 = 0 num2 = 0 num3 = 0 rawfile = None

/dev/input/event0:0003 0001 000081a5

应该成为

sendevent 0003 0001 000081a5
在新文件中

代码是

import sys
import fileinput

prefix = 'sendevent '

inputline = None
complete = None
part1len = 0
part1 = None
part2 = None

num1 = 0
num2 = 0
num3 = 0

rawfile = None
outfile = None
filename = None

rawfile = sys.argv[-1]

fo = open(rawfile, 'r')

filename = rawfile.find('.');
outfile = rawfile[:filename] + '.scr'

fw = open(outfile, 'w')

fw.write('#!/bin/sh' + '\n')

fw.write('echo Running - signature function ' + '\n')

for inputline in fo.read().split('\n'):
    part1len = inputline.find(':');

    if part1len > -1:
        part1 = inputline[:part1len]

        part2 = inputline.split(' ')

        num1 = int(part2[1], 16)
        num2 = int(part2[2], 16)
        num3 = int(part2[3], 16)

        complete = prefix + part1 + " " + str(num1) + " " + str(num2) + " " + str(num3)

        fw.write(complete + '\n')

print 'Processing complete'
print 'File created: ', outfile
print
print 'Copy file to the device'
print 'adb push ' + outfile + ' /sdcard/' + outfile
print
print 'Run the script'
print 'adb shell sh /sdcard/' + outfile

fo.close()
fw.close()
输出命令行中的错误为:

Traceback (most recent call last):
  File "Android\decs.py", line 41, in <module>
    num1 = int(part2[1], 16)
ValueError: invalid literal for int() with base 16: '='
回溯(最近一次呼叫最后一次):
文件“Android\decs.py”,第41行,在
num1=int(第2[1]部分,16)
ValueError:基为16的int()的文本无效:'='
今天刚开始学习Python。我不确定出了什么问题。曾在网上发布过类似错误,但无法找到解决方案


谢谢

您的文件有一行看起来像
123=
。另外,不要对fo.read().split('\n')中的inputline执行
。您只需对fo中的inputline执行
与示例数据不同,实际数据的某个地方有一个等号。检查你的数据。你应该用十六进制还是十进制写出数字?您当前的代码(如果有效的话)将使用十进制,但您的示例显示它应该使用十六进制。如果这个例子是正确的,那么最好不要解析这些数字,而只是将它们作为未修改的字符串传递