https://github.com/affinelayer/pix2pix-tensorflow/tree/master/tools
Terjadi kesalahan saat mengompilasi "process.py" di situs di atas.
python tools/process.py --input_dir data -- operation resize --outp
ut_dir data2/resize
data/0.jpg -> data2/resize/0.png
Traceback (panggilan terakhir terakhir):
File "tools/process.py", line 235, in <module>
main()
File "tools/process.py", line 167, in main
src = load(src_path)
File "tools/process.py", line 113, in load
contents = open(path).read()
File"/home/user/anaconda3/envs/tensorflow_2/lib/python3.5/codecs.py", line 321, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
Apa penyebab kesalahannya? Versi Python adalah 3.5.2.
sumber
rb
(saya pikir urutan itu tidak penting, tetapi tampaknya, setidaknya di beberapa sistem / versi). Saya mengubah jawaban saya sesuai.byte 0xff in position 0
bisa juga berarti file tersebut dikodekan dalam UTF-16, maka Anda dapat melakukannyawith open(path, encoding='utf-16') as f:
sebagai gantinya0xff
karakter di posisi0
? Dan ituUTF-8
dikodekan.'\xFF'
Karakter murni akan dikodekan dalam UTF-8 sebagai'\xC3\xBF'
. UTF-8 mengkodekan semua karakter dengan satu set MSB menggunakan dua karakter. (Lihat outputprintf "\xff" | iconv -f latin1 -t utf-8 | xxd
dalam sebuah shell.) Sebuah kata demi kata'\xFF'
di awal string yang dikodekan UTF-8 adalah kesalahan pengkodean (bisa disebut kesalahan sintaksis dalam hal UTF-8).Gunakan solusi ini akan menghapus (mengabaikan) karakter dan mengembalikan string tanpa mereka. Gunakan ini hanya jika kebutuhan Anda adalah menelanjangi mereka untuk tidak mengubahnya.
Menggunakan
errors='ignore'
Anda hanya akan kehilangan beberapa karakter. tetapi jika Anda tidak peduli tentang mereka karena mereka tampaknya karakter tambahan yang berasal dari pemformatan dan pemrograman yang buruk dari klien yang terhubung ke server soket saya. Maka itu solusi langsung yang mudah. referensisumber
contents = contents.decode('utf-8', 'ignore')
Sumber: docs.python.org/3/howto/unicode.html#the-string-typePunya masalah yang mirip dengan ini, Berakhir menggunakan UTF-16 untuk memecahkan kode. kode saya di bawah.
ini akan mengambil konten file sebagai impor, tetapi akan mengembalikan kode dalam format UTF. dari sana akan diterjemahkan dan dipisahkan oleh garis.
sumber
with open(path, encoding='utf-16') as f
TypeError: an integer is required (got type str)
. Mengapa? Kedua file tersebut adalah biner dan dibaca sebagairb
.encoding
hanya masuk akal saat membaca teks. Jatuhkan 'b' dari argumen mode dan coba lagi. Baca lebih lanjut di dokumen: docs.python.org/3/library/functions.html#openGunakan format pengodean ISO-8859-1 untuk menyelesaikan masalah.
sumber
Saya telah menemukan utas ini ketika mengalami kesalahan yang sama, setelah melakukan beberapa penelitian saya dapat mengonfirmasi, ini adalah kesalahan yang terjadi ketika Anda mencoba mendekode file UTF-16 dengan UTF-8.
Dengan UTF-16 karakter pertama (2 byte dalam UTF-16) adalah Byte Order Mark (BOM) , yang digunakan sebagai petunjuk decoding dan tidak muncul sebagai karakter dalam string yang diterjemahkan. Ini berarti byte pertama adalah FE atau FF dan byte kedua, yang lain.
Sangat diedit setelah saya menemukan jawaban yang sebenarnya
sumber
gunakan saja
dari pada
sumber
Jika Anda menggunakan mac periksa apakah Anda memiliki file tersembunyi, .DS_Store. Setelah menghapus file, program saya berfungsi.
sumber
Periksa jalur file yang akan dibaca. Kode saya terus memberi saya kesalahan sampai saya mengubah nama jalur untuk menyajikan direktori yang berfungsi. Kesalahannya adalah:
sumber
jika Anda menerima data dari port serial, pastikan Anda menggunakan baudrate kanan (dan konfigurasi lainnya): decoding using ( utf-8 ) tetapi konfigurasi yang salah akan menghasilkan kesalahan yang sama
untuk memeriksa konfigurasi port serial Anda pada penggunaan linux:
stty -F /dev/ttyUSBX -a
sumber
Ini berarti bahwa seseorang memilih penyandian yang salah untuk membaca file.
Di Mac, gunakan
file -I file.txt
untuk menemukan penyandian yang benar. Di Linux, gunakanfile -i file.txt
.sumber
Saya memiliki masalah yang sama ketika memproses file yang dihasilkan dari Linux. Ternyata itu terkait dengan file yang berisi tanda tanya ..
sumber
Saya punya masalah serupa.
Dipecahkan dengan:
Namun, saya punya masalah lain. Beberapa file html (dalam kasus saya) tidak utf-8, jadi saya menerima kesalahan serupa. Ketika saya mengecualikan file html itu, semuanya bekerja dengan lancar.
Jadi, kecuali dari memperbaiki kode, periksa juga file yang Anda baca, mungkin memang ada ketidakcocokan di sana.
sumber
Jika memungkinkan, buka file dalam editor teks dan cobalah untuk mengubah encoding ke UTF-8. Kalau tidak, lakukan pemrograman pada tingkat OS.
sumber
Saya punya masalah serupa. Saya mencoba menjalankan contoh di tensorflow / models / objective_detection dan bertemu pesan yang sama. Cobalah untuk mengubah Python3 ke Python2
sumber