Ich habe Django REST und mein Endpunkt akzeptieren POST mit Attachemtn.
Suche funktioniert nicht in Speicherdatei
if serializer.is_valid():
instance = UploadedFile.objects.create(
file=serializer.validated_data['file'],
username=self.request.user.get_username(),
)
Dann habe ich auf die Funktion Datei. Wiederholen Sie diese In-Memory-Datei wiederholt in Schleife.
for pair in daterange(start_date, end_date):
bkk_start_datetime = mom_datetime.datetime.combine(pair, mom_datetime.time(0, 0))
bkk_end_datetime = mom_datetime.datetime.combine(pair + timedelta(days=1), mom_datetime.time(0, 0))
ans_dict = {
"bkk_start_datetime": bkk_start_datetime,
"bkk_end_datetime": bkk_end_datetime,
"pin_values": pin_values_from_file(instance, bkk_start_datetime, bkk_end_datetime)
}
ans.append(ans_dict)
Diese Funktion hat Problem, weil Datei an der ersten Stelle nicht suchen. Obwohl ich setze .seek(0)
def pin_values_from_file(instance: object, start_date: datetime, end_date: datetime):
csv_file = io.StringIO(instance.file.read().decode('utf-16'))
csv_file.seek(0) # Seek the first line again. Otherwise next day will be zero all
reader = csv.reader(csv_file, dialect='excel-tab')
count = 0
holder = AwardHolder()
logger.info(f"pin_values_from_file receive {start_date}, {end_date}")
Wie es zu lassen, erneut zu lesen in-memory-Datei?
Ich versuche, Ihre Nachrichten – Sarit
Vielen Dank für Ihre Antwort zu verstehen. Aber ich habe den Fehler 'io.UnsupportedOperation: seek' erhalten. Ich glaube, dass es das erhöht, weil meine Datei keine Datei auf der Festplatte ist, sondern eine Datei von' request' und noch nicht im Speicher gespeichert ist. Dann habe ich beschlossen, eine neue Klasse zu erstellen und den ganzen Wert darin zu speichern, und jetzt kann ich sie wieder lesen – Sarit
Ah ja, Sie sind richtig. – Melvyn