Ich renne in Python in einen seltsamen Fehler. Ich benutze den chain
Befehl, um ein Array von Daten und dann den list
Befehl zu flattern, um es in ein Array zurückzulegen. Abhängig davon, wie ich das Array definiere, bekomme ich einen Fehler. Was ich möchte, ist so etwas wie diesPython TypeError Problem 'int' nicht iterierbar mit Liste mit Kette
import os, io, struct, array
from itertools import chain
#Open file and set the size of the data for use later
file=open('filePath','rb')
size = os.fstat(file.fileno()).st_size
count = int(size)
#Initializing an array with length to match the data
dataArray=[0]*count
#storing the values of data 4 bytes at a time to produce the numeric values.
for i in range(0,count,4):
dataArray[i]=struct.unpack('i', file.read(4))
#Deals with a tuple issue ((x,),(y,),...) -> (x,y,...)
dataArray = list(chain(*dataArray[:count]))
Das ist mir TypeError: 'int' object is not iterable
aus der letzten Zeile gibt. Wenn ich jedoch etwas wie
count = 33638664
myarray=[0]*count
for i in range(3638664):
myarray[i]=struct.unpack('i', file.read(4))
result = list(chain(*myarray[:3638664]))
sage, erhalte ich keinen solchen Fehler. Beachten Sie, dass in diesem zweiten Codeabschnitt der Wert in der Kettenmethode 3638664 kleiner als count
ist. Es wird einen Fehler erzeugen, wenn ich es auf die Länge count
setze. Ist das eine Art von Indizierung oder Zählen? Ich bin nicht sicher, warum ich diese Art von Fehler für meinen ursprünglichen Code und nicht für diesen willkürlichen count
Wertcode erhalte.
Dies benötigt ein [MCVE]. Wie es ist, werfen beide Versionen des Codes den gleichen Fehler für mich. –