如何访问文件中的某些字节、修改它们以及输出修改后的文件

2024-09-30 10:35:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图访问文件中的某些字节,修改它们,然后输出修改后的文件

该文件是一个位图,但这并不重要,因为我正在使用open(file, 'rb')。当我试图访问byte对象中的元素时,我会得到字母、数字和斜杠的组合。然而,当我将元素添加到列表中时,我得到的数字介于0和127之间(这就是我要寻找的)

然后,问题是修改它们并将其更改回我最初从byte对象访问的格式。我一直想弄清楚它是什么,但似乎找不到我要找的那部分

我的计划是从文件的开头取一个切片,进行更改,然后附加未触及的切片,并使用write(file, 'wb')输出文件

有什么建议吗?我希望有一个简单的铸造方法,我只是不知道我铸造什么

在某些情况下,我试图用LSB编写一个隐写术的实现。这一点是唯一的障碍,因为我想我已经解决了所有其他问题。这是大学作业,我必须在没有图书馆的情况下完成(枕头除外,我想我不需要)

顺便说一下,我正在使用workingSlice = imageBytes[:length]endSlice = imageBytes[length:]对文件进行切片,这在快速测试后似乎可以正常工作length将由隐藏消息的长度(加上标头)定义

我编写了一些代码来测试这一点:

length = 10
with open("TestBMP.bmp", "rb") as image:
    imbytes = image.read()
    workingSlice = imbytes[:length]
    endSlice = imbytes[length:]
    print(workingSlice)
    byteList = []
    for i in workingSlice:
        byteList += [i]
    print(byteList)
    stringout = b""
    for i in byteList:
        stringout += bytes(i)
    print(stringout)

输出:

b'BM6\x00\x03\x00\x00\x00\x00\x00'

[66, 77, 54, 0, 3, 0, 0, 0, 0, 0]

b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

Tags: 文件对象元素切片openbytelengthfile

热门问题