Python 将十六进制文件的结尾归零为特定大小

Python 将十六进制文件的结尾归零为特定大小,python,hex,Python,Hex,我有一堆十六进制文件需要读入python。我想把十六进制文件的内容分成4字节的块,然后分配给数据帧中的列 我的问题是,我拥有的文件目前不是标称大小-它们需要是32字节的倍数-因此我需要对每个文件的结尾进行零填充,以便其总体大小是32的倍数。我目前有以下代码将十六进制文件的内容读入变量,但我还没有找到任何关于如何在文件末尾追加正确字节数(0)的信息 gnss_input = "Inputs/TestCommands/Set10Sec" #this is a 67 byte file, needs

我有一堆十六进制文件需要读入python。我想把十六进制文件的内容分成4字节的块,然后分配给数据帧中的列

我的问题是,我拥有的文件目前不是标称大小-它们需要是32字节的倍数-因此我需要对每个文件的结尾进行零填充,以便其总体大小是32的倍数。我目前有以下代码将十六进制文件的内容读入变量,但我还没有找到任何关于如何在文件末尾追加正确字节数(0)的信息

gnss_input = "Inputs/TestCommands/Set10Sec" #this is a 67 byte file, needs to be 96 bytes
size = os.path.getsize(gnss_input)
with open(gnss_input,'rb') as file:
  byts = file.read()
  a = binascii.hexlify(byts)
通过从32的最接近倍数中减去当前文件大小,我知道需要追加多少额外数据,但我不知道如何创建一个0字符串,该字符串等于此大小(以字节为单位)以追加到十六进制数据文件


这是我第一次操作十六进制文件,任何帮助都将不胜感激

下面的代码将为
gnss_input
中的文件路径附加适当的十六进制值:

gnss_input = "/home/eric/src/test_pad.txt" #this is a 67 byte file, needs to be 96 bytes
size = os.path.getsize(gnss_input)
if size % 32 != 0:
    pad_number = 32 - (size % 32)
else:
    pad_number = 0
with open(gnss_input,'r+b') as file:
    contents = file.read()  # Read to end of file
    # Do your processing with contents here
    padding = [0x0 for _ in range(pad_number)]  # Create bytearray
    file.write(bytearray(padding))  # Append bytes to the end

您知道数据的当前大小,您知道您想要的大小,因此只需计算差异
wanted-actual
,并使用它向数据附加一组零字节。这里有什么问题?@ForceBru如何在数据末尾附加一堆零字节?我知道如何附加到文件,但如何附加特定大小的0字符串-即如何创建特定字节长度的字符串?如果可以直接创建字节数组,为什么要创建字符串-a
bytearray