微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将“字符串”作为原始二进制文件写入文件Python

如何解决将“字符串”作为原始二进制文件写入文件Python

要只写一个字节,请使用chr(n)获取包含integer的字节n

您的代码可以简化为:

import os
path = r'C:\Users\me\Desktop\output'
for counter in xrange(100):
    with open(os.path.join(path,'{:02x}.txt'.format(counter)),'wb') as f:
        f.write(chr(counter))

请注意使用原始字符串作为路径。如果字符串中有’\ r’或’\ n’,则它们将被视为回车或换行,而无需使用原始字符串。

f.write是写入文件方法chr(counter)生成字节。确保也以二进制模式编写'wb'

解决方法

我正在尝试编写一系列文件以进行测试,这些文件是我从头开始构建的。数据有效负载构建器的输出为字符串类型,而我正努力将字符串直接写入文件。

有效负载生成器仅使用十六进制值,并且每次迭代仅添加一个字节。

我尝试过的’write’函数要么是写字符串,要么是为字符串写ASCII码,而不是字符串本身。

我想结束一系列文件-与数据有效负载使用相同的文件名(例如,文件ff.txt包含字节0xff

def doMakeData(counter):
    dataPayload = "%X" %counter
    if len(dataPayload)%2==1:
        dataPayload = str('0') + str(dataPayload)
    fileName = path+str(dataPayload)+".txt"
    return dataPayload,fileName

def doFilenameMaker(counter):
    counter += 1
    return counter

def saveFile(dataPayload,fileName):
    # with open(fileName,"w") as text_file:
          # text_file.write("%s"%dataPayload)  #this just writes the ASCII for the string
    f = file(fileName,'wb')
    dataPayload.write(f) #this also writes the ASCII for the string
    f.close()
    return

if __name__ == "__main__":
    path = "C:\Users\me\Desktop\output\\"
    counter = 0
    iterator = 100
    while counter < iterator:
        counter = doFilenameMaker(counter)
        dataPayload,fileName = doMakeData(counter)
        print type(dataPayload)
        saveFile(dataPayload,fileName)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。