Kod:
file('pinax/media/a.jpg', 'wb')
openzamiast file, który został wycofany w Pythonie 2 i usunięty w Pythonie 3. Zobacz stackoverflow.com/questions/112970/ ...
Kod:
file('pinax/media/a.jpg', 'wb')
openzamiast file, który został wycofany w Pythonie 2 i usunięty w Pythonie 3. Zobacz stackoverflow.com/questions/112970/ ...
Odpowiedzi:
Tryb plików , zapis i binarny. Ponieważ piszesz plik .jpg, wygląda dobrze.
Ale jeśli masz przeczytać ten plik jpg, musisz użyć 'rb'
Więcej informacji
W systemie Windows „b” dołączone do trybu otwiera plik w trybie binarnym, więc są też tryby, takie jak „rb”, „wb” i „r + b”. Python w systemie Windows rozróżnia pliki tekstowe i binarne; znaki końca linii w plikach tekstowych są automatycznie nieznacznie zmieniane, gdy dane są odczytywane lub zapisywane. Ta zakulisowa modyfikacja danych plików jest dobra w przypadku plików tekstowych ASCII, ale spowoduje uszkodzenie danych binarnych, takich jak w plikach JPEG lub EXE.
fd.write("foo\n")faktycznie zapisuje na dysku foo\r\n(zwróć uwagę na \r).
Symbol wbwskazuje, że plik jest otwierany do zapisu w trybie binarnym.
Podczas pisania w trybie binarnym Python nie wprowadza żadnych zmian w danych, gdy są one zapisywane do pliku. Jednak w trybie tekstowym (gdy bjest wykluczone, jak w just wlub gdy określisz tryb tekstowy za pomocą wt), jednak Python zakoduje tekst w oparciu o domyślne kodowanie tekstu. Ponadto Python przekonwertuje zakończenia linii ( \n) na dowolne zakończenie linii specyficzne dla platformy, co mogłoby uszkodzić plik binarny, taki jak exelub png.
Dlatego podczas pisania plików tekstowych należy używać trybu tekstowego (niezależnie od tego, czy używa się zwykłego tekstu, czy formatu tekstowego, takiego jak CSV), natomiast tryb binarny należy używać podczas pisania plików nietekstowych, takich jak obrazy.
Bibliografia:
https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files https://docs.python.org/3/library/functions.html#open
wbopcją. Korzystając z tej wopcji, udało mi się sprawić, by działał poprawnie.
btryb ma wpływ tylko na Windows. Zostało to teraz usunięte z dokumentacji i tryb binarny „powinien być używany dla wszystkich plików, które nie zawierają tekstu”.
To jest tryb, w którym otwierasz plik. „wb” oznacza, że piszesz do pliku (w) i że piszesz w trybie binarnym (b).
Sprawdź dokumentację, aby uzyskać więcej informacji: clicky
openzamiastfile.filezostał uznany za przestarzały w Pythonie 2 (nie można znaleźć wersji) i został usunięty w py3k. (dzięki Scott) Zobacz to pytanie, aby uzyskać więcej informacji.