web-dev-qa-db-fra.com

Lecture d'un fichier binaire .dat sous forme de tableau

J'ai un code qui passe par plusieurs itérations. À chaque itération, le code génère un tableau basé sur numpy. J'ajoute le tableau basé sur numpy à un fichier binaire .dat existant. J'utilise le code suivant pour générer les données:

WholeData = numpy.concatenate((Location,Data),axis=0)  
# Location & Data are two numpy arrays
DataBinary = open('DataBinary.dat','ab')
WholeData.tofile(DataBinary)
DataBinary.close()

J'essaye de lire le fichier binaire entier dans un tableau. Je rencontre les difficultés suivantes:

  1. J'ai essayé le code suivant:

    NewData = numpy.array('f')
    File1 = open('DataBinary.dat','rb')
    NewData.fromstring(File1.read())
    File1.close()
    

    Statut d'erreur:

    Traceback (appel le plus récent en dernier): Fichier "", ligne 1, dans AttributeError: l'objet "numpy.ndarray" n'a pas d'attribut "fromstring"

  2. J'ai essayé d'utiliser un tableau basé sur un tableau, puis lu le fichier dans le tableau.

    from array import array
    File1 = open('DataBinary.dat','rb')
    NewData.fromstring(File1.read())
    File1.close()
    

Cependant, NewData est erroné, c’est-à-dire qu’il n’est pas identique à WholeData. Je suppose que sauvegarder les données en tant que numpy.array et les lire en tant que array.array pourrait ne pas être une bonne option.

N'hésitez pas à nous faire part de vos suggestions.

7
Nazmul

Je pense que numpy.fromfile est ce que vous voulez ici:

import numpy as np
myarray = np.fromfile('BinaryData.dat', dtype=float)

Notez également que, selon la documentation, ce n’est pas le meilleur moyen de stocker des données car "les informations sur la précision et l’endianisme sont perdues". En d'autres termes, vous devez vous assurer que le type de données transmis à dtype est compatible avec ce que vous avez écrit à l'origine dans le fichier.

23
mgilson

Pour lire le binaire du fichier à la liste:

list_int = [ord(i) for i in fd.read()]
0
Roman Baranov