python,文件中每行都有一个很长的二进制数据,怎样能将二进制数据读进变量中:报错 -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

python,文件中每行都有一个很长的二进制数据,怎样能将二进制数据读进变量中:报错

kun坤 2020-06-07 17:03:21 151

假设有一个文件,文件里每一个行有两个内容,内容间以空格隔开 :

1.以010101这种二进制形式表达的内容,二进制的数据最长可能有3w个字符,

2.对第一列内容的唯一编号。

例:1010010101001010100100*******11000000101010  234567

利用Python 怎样读取每一行内容时可以将这个3w多位长的二进制数据读到变量里?

求各位大神帮忙看下。


Python
分享到
取消 提交回答
全部回答(1)
  • kun坤
    2020-06-07 17:03:26

    首先,如果你在文件里保存的二进制就是0101这样的字符,那就先当作字符串读出来,这种情况下分隔每行的前后两列很容易。

    datalist = []
    with open(filepath) as f:
      for line in f.readlines():
        data,order = line.strip().split(' ')
        datalist.append((int(data,2),order)) # 数据部分先转换成数字保存起来,待后续使用。
    如果数据部分是真正的二进制数据,而非01字符串,那么需要确保数据部分当作字符串读取出来没有换行符(0b00001010)以及空格(0b0010000),才可以用readlines和split来处理。

    如果每行长度固定,也可以直接打开文件后,每次读取指定长度的内容来实现。

    ######

    f = open('test.txt''r')

    lines = f.readlines()

    binData = ''.join(lines)

    ######

    引用来自“SupNatural”的评论

    首先,如果你在文件里保存的二进制就是0101这样的字符,那就先当作字符串读出来,这种情况下分隔每行的前后两列很容易。

    datalist = []
    with open(filepath) as f:
      for line in f.readlines():
        data,order = line.strip().split(' ')
        datalist.append((int(data,2),order)) # 数据部分先转换成数字保存起来,待后续使用。
    如果数据部分是真正的二进制数据,而非01字符串,那么需要确保数据部分当作字符串读取出来没有换行符(0b00001010)以及空格(0b0010000),才可以用readlines和split来处理。

    如果每行长度固定,也可以直接打开文件后,每次读取指定长度的内容来实现。

    文件里面以01001这样存储的字符串,realines时直接读取发现读取不到,后来用 ''.join(lines)读取进来了,然后再用分割符切分我想要的内容,不知道这样是不是可行。不过您的答案也让我读懂很多。刚开始学python多谢指导。
    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题
推荐课程