Ich habe ein BytesIO-Objekt, das die Daten eines Excel-Dokuments enthält. Die Bibliothek, die ich verwenden möchte, unterstützt BytesIO nicht und erwartet stattdessen ein File-Objekt. Wie kann ich mein BytesIO-Objekt in ein File-Objekt konvertieren?Konvertieren von BytesIO in Datei
12
A
Antwort
11
Also, es wäre viel hilfreicher, wenn Sie die Bibliothek zur Verfügung stellen, die Sie verwenden, um Excel-Dateien zu bearbeiten, aber hier ist ein Buckshot von Lösungen, von denen einige funktionieren können, basierend auf zufälligen Annahmen, die ich mache völlige Fehlen von Beispielcode:
- auf dem ersten Absatz mit Sitz in den io module, es klingt wie alle konkreten classes- einschließlich BytesIO- file-like objects sind. Ohne zu wissen, welchen Code Sie bisher ausprobiert haben, weiß ich nicht, ob Sie versucht haben, das BytesIO nur an das Modul zu übergeben, das Sie verwenden.
- Auf der anderen Seite, die nicht funktioniert, können Sie einfach BytesIO in einen anderen io Writer/Reader/Wrapper konvertieren, indem Sie es an den Konstruktor übergeben. Beispiel:
.
import io
b = io.BytesIO(b"Hello World") ## Some random BytesIO Object
print(type(b)) ## For sanity's sake
with open("test.xlsx") as f: ## Excel File
print(type(f)) ## Open file is TextIOWrapper
bw=io.TextIOWrapper(b) ## Conversion to TextIOWrapper
print(type(bw)) ## Just to confirm
- Sie müssen möglicherweise prüfen, welche Art von Reader/Writer/Wrapper wird durch das Modul erwartet Sie die BytesIO an den richtigen
- zu konvertieren verwenden Ich glaube, ich habe gehört, dass (für Speichergründe, aufgrund extrem großer Excel-Dateien) Excel-Module laden nicht die gesamte Datei. Wenn dies bedeutet, dass Sie eine physische Datei auf der Festplatte benötigen, können Sie die Excel-Datei einfach temporär schreiben und sie einfach löschen, wenn Sie fertig sind. Beispiel:
.
import io
import os
with open("test.xlsx",'rb') as f:
g=io.BytesIO(f.read()) ## Getting an Excel File represented as a BytesIO Object
temporarylocation="testout.xlsx"
with open(temporarylocation,'wb') as out: ## Open temporary file as bytes
out.write(g.read()) ## Read bytes into file
## Do stuff with module/file
os.remove(temporarylocation) ## Delete file when done
Ich hoffe, dass einer dieser Punkte Ihr Problem lösen wird.
Verwandte Themen
- 1. Konvertieren von Datei in MultiPartFile
- 2. Konvertieren von Datei in String
- 3. Konvertieren von jar-Datei
- 4. PIL open() -Methode arbeitet nicht mit BytesIO
- 5. Python: Konvertieren von PNG zu JPG ohne Speichern von Datei auf Festplatte mit PIL
- 6. Konvertieren von YAML-Datei in Python-Dict
- 7. Konvertieren von doc-Datei in PDF
- 8. Konvertieren von PDF in Word-doc-Datei
- 9. Konvertieren von UIImage in PDF-Datei
- 10. konvertieren bcp-Datei in Standard-CSV-Datei
- 11. Wie Konvertieren von .caf-Datei in. MP3-Datei?
- 12. Android Pcm-Datei von AudioRecord in kleinere Datei konvertieren
- 13. WAV-Datei in TXT-Datei konvertieren
- 14. Unix-XML-Datei in Flat-Datei konvertieren
- 15. Konvertieren einer TXT-Datei in XLS-Datei
- 16. Konvertieren von Bilddatei von Anlage in Pdf-Datei in Python
- 17. konvertieren Odex-Datei in Dex-Datei
- 18. konvertieren Sonderzeichen in JavaScript-Datei
- 19. Ruby String in Datei konvertieren
- 20. XML-Datei in DBF konvertieren
- 21. konvertieren Hex-Datei in Binärdatei
- 22. Verwenden von System.Speech zum Konvertieren von MP3-Datei in Text
- 23. Python: Konvertieren von XML zu CSV-Datei
- 24. Konvertieren von .class-Datei/en in .java-Datei/en von .jar-Datei
- 25. ImportError: Name kann nicht importiert werden BytesIO auf Eklipse
- 26. Konvertieren von JSON-Datei in CSV in R
- 27. Konvertieren von Quadrilateralen in einer OBJ-Datei in Dreiecke?
- 28. Konvertieren von Bytestream in Datei in Client-Seite mit gwt
- 29. Konvertieren von PDF-Datei in Bild in Javascript/Jquery
- 30. Kissen zu BytesIO oder StringIO KeyError zu speichern: „JPG“
Mögliches XY-Problem. Was versuchst du eigentlich? ZB brauchen Sie vielleicht etwas, das eine Eigenschaft 'fileno' unterstützt? –