Mam obiekt BytesIO zawierający dane dokumentu programu Excel. Biblioteka, której chcę użyć, nie obsługuje BytesIO i oczekuje zamiast niej obiektu File. Jak mogę wziąć mój obiekt BytesIO i przekonwertować go na obiekt File?Konwertuj BytesIO na Plik
12
A
Odpowiedz
11
Byłoby o wiele bardziej pomocne, gdybyś dostarczył bibliotekę, której używasz do pracy z plikami Excel, ale tutaj jest mnóstwo rozwiązań, z których niektóre mogą działać, w oparciu o losowe założenia, które robię z powodu zupełny brak przykładowy kod:
- na podstawie akapitu pierwszego w io module, to brzmi jak wszystkie betonowej classes- tym BytesIO- są file-like objects. Nie wiedząc, jaki kod próbowałeś do tej pory, nie wiem, czy próbowałeś przekazać Bytesio do dowolnego modułu, z którego korzystasz.
- Jeśli nie działa, możesz po prostu przekonwertować BytesIO na innego io Writer/Reader/Wrapper, przekazując go do konstruktora. Przykład:
.
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
- Być może trzeba sprawdzić, jaki rodzaj Reader/Writer/Wrapper jest oczekiwane przez moduł, którego używasz do konwersji BytesIO do właściwego
- wierzę Słyszałem, że (dla z powodu pamięci, ze względu na bardzo duże pliki Excela), moduły excela nie ładują całego pliku. Jeśli to się skończy, co oznacza, że potrzebny jest fizyczny plik na dysku, możesz łatwo napisać tymczasowo plik Excela i po prostu go usunąć, kiedy skończysz. Przykład:
.
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
Mam nadzieję, że jeden z tych punktów rozwiąże Twój problem.
Powiązane problemy
- 1. Konwertuj plik JSON na .plist
- 2. Konwertuj typ MIME na plik Rozszerzenie PHP
- 3. Konwertuj plik uri na zawartość uri
- 4. Konwertuj tablicę bajtów na plik WAV
- 5. Konwertuj ciąg znaków Base64 na plik obrazu?
- 6. Konwertuj istniejący plik html.erb na Haml
- 7. Konwertuj plik IDL interfejsu na C#
- 8. Konwertuj plik .AIB (plik indeksowania multimediów) na czytelny format (String)
- 9. Konwertuj plik IFIL do pliku
- 10. Metoda PIL open() nie działa z BytesIO
- 11. Konwertuj .json na ipynb
- 12. Konwertuj binarny plik w skali szarości na JPEG
- 13. Konwertuj listę <images> na plik wideo?
- 14. Konwertuj plik PDF na dowolny z interfejsem API Dysku Google
- 15. Konwertuj bieżący plik .vssettings na .vstheme dla VS 2013
- 16. Konwertuj plik konfiguracyjny application.yml na application.groovy w Grails 3.x
- 17. Konwertuj obraz Base64 na surowy plik binarny za pomocą Node.js
- 18. Konwertuj tablicę na csv
- 19. Swift: Konwertuj struct na JSON?
- 20. Konwertuj funkcję na blok Simulink
- 21. Konwertuj plik e.printStackTrace(), aby używał log4j zamiast:
- 22. Konwertuj plik zrzutu PostgreSQL do MySQL?
- 23. Konwertuj NodaTime DateTimeZone na TimeZoneInfo
- 24. Konwertuj mapę bitową na ikonę
- 25. Konwertuj NA na poziom czynnika
- 26. Konwertuj CSS na HTML
- 27. Konwertuj obraz na XAML?
- 28. Konwertuj System.Windows.Media.Pen na System.Drawing.Pen
- 29. Konwertuj ciąg na LatLng
- 30. Konwertuj tablicę na JSON
Możliwe problem XY. Co tak naprawdę próbujesz zrobić. Np. Czy może potrzebujesz czegoś, co obsługuje właściwość 'fileno'? –