在函数中解码python中的数组

时间:2019-06-26 17:39:20

标签: python decode

我创建了一个加载函数来读取文件。我的问题是数据是我需要解码的数组。

def load(input_file):
    f = open(input_file,"rb")
    if f.mode == "rb":
       contents = f.read()
       print(contents)

load('/path/data/text.txt')

结果是我需要解码的以下内容

b'\xc3\x84\x03cjoblib.numpy_pickle\nNumpyArrayWrapper\nq\x00)\
    xc3\x85q\x01}q\x02(X\x08\x00\x00\x00subclassq
    \x03cnumpy\nndarray\nq\x04X\x05\x00\x00

3 个答案:

答案 0 :(得分:2)

数据看起来像是Python的泡菜,应该使用pickle module进行加载

pickle.load(input_file)

答案 1 :(得分:1)

您错过了条件输入,而没有输入。 内容应在if语句下

def load(input_file):
    f = open(input_file,"rb")
    if f.mode == "rb":
        contents = f.read()
        print(contents)

load('/path/data/text.txt')

答案 2 :(得分:1)

您的文件似乎包含pickle'd data

假设您信任该文件,则可以使用pickle.load加载它:

arr = pickle.loads(content)

但是,请注意加载腌制的内容是 super 的危险,因此请确保您完全信任该文件(例如,您知道创建了该文件并尚未对其进行修改)。

pickle 在某些情况下很有用,例如在两个单独的Python进程之间共享数据。

另一种选择:由于看起来您正在存储numpy数组,因此使用numpy的{​​{3}}函数会更好,更容易(也许更快)。

arr = numpy.arange(10)
arr.tofile('array.bin')

loaded_arr = numpy.fromfile('array.bin', numpy.int)