文件的二进制数据作为变量存储在python fi中

2024-10-01 17:28:09 发布

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

让我们说有程序.exe,我将创建一个python脚本

  • 阅读程序.exe以二进制模式保存在变量数据中
  • 打开mypytonprog.py公司在二进制追加模式下
  • 将数据追加到我的pythonprog.py(?) 在

在此之前,我的pythonprog.py准备为:

program_data='''

之后,我的pythonprog.py将继续:

^{pr2}$

(我想以某种方式将程序代码放入program\u数据变量中)

当然,不是行得通吗,但可以用某种方式来做吗? 我最想要的是:我的pythonfile.py能够创建一个包含二进制数据的exe文件。在

我支持我必须把数据编码成外壳代码,这样才能把它放进去我的pythonfile.py,
正确的?在


Tags: 数据py程序脚本data方式二进制模式
2条回答
>>> 'some binary data'.encode('base64')
'c29tZSBiaW5hcnkgZGF0YQ==\n'
>>> 'c29tZSBiaW5hcnkgZGF0YQ==\n'.decode('base64')
'some binary data'
import base64

exe = 'c:/users/me/program.exe'
script = 'c:/users/me/newpython.py'
chunksize = 6144
linelength = 80

with open(exe,'rb') as inf, open(script,'w') as outf:
    outf.write('program_data = """')

    while True:
        progdata = inf.read(chunksize)
        if len(progdata):
            progdata = progdata.encode("base64")
            outf.writelines(progdata[i:i+linelength] for i in range(0, len(progdata), linelength))
        else:
            break

    outf.write('""".decode("base64")')

编辑:

这个想法是在方便的块中处理输入文件,而不是将潜在的巨大文件读入内存。在

在base64编码块之后,我将它分成80个字符行(这基本上只是为了在文本编辑器中保持它的可管理性)并将其写入输出。在

我将数据包装在程序“u data=”“.”“.”中。解码(“base64”),这样当Python加载文件时,数据将自动解密-program_data将包含您想要的二进制数据。在

8096是一个脑屁-我想用8192字节(8KB)。然后我意识到还有第二个问题:编码一个长度不是3个字符的倍数的块会导致“=”填充的输出,这会过早地截断解码。我已经将块大小更改为6KB=512字节(默认的NTFS块大小)*3个字符*4(任意多个);这似乎与预期的一样。在

希望有帮助!在

相关问题 更多 >

    热门问题