Ketika saya mencoba menerapkan OCRopus (alat OCR berbasis python) ke gambar TIFF, saya mendapatkan kesalahan python berikut
Traceback (most recent call last): File "/usr/local/bin/ocropus-nlbin", line 10, in import ocrolib File "/usr/local/lib/python2.7/dist-packages/ocrolib/__init__.py", line 12, in from common import * File "/usr/local/lib/python2.7/dist-packages/ocrolib/common.py", line 18, in import lstm File "/usr/local/lib/python2.7/dist-packages/ocrolib/lstm.py", line 32, in import nutils File "/usr/local/lib/python2.7/dist-packages/ocrolib/nutils.py", line 25, in lstm_native = compile_and_load(lstm_utils) File "/usr/local/lib/python2.7/dist-packages/ocrolib/native.py", line 68, in compile_and_load return ctypes.CDLL(path) File "/usr/lib/python2.7/ctypes/__init__.py", line 365, in __init__ self._handle = _dlopen(self._name, mode) OSError: .pynative/cccd32009099f8dade0fe6cd205bf188.so: file too short Traceback (most recent call last): File "/usr/local/bin/ocropus-gpageseg", line 22, in import ocrolib File "/usr/local/lib/python2.7/dist-packages/ocrolib/__init__.py", line 12, in from common import * File "/usr/local/lib/python2.7/dist-packages/ocrolib/common.py", line 18, in import lstm File "/usr/local/lib/python2.7/dist-packages/ocrolib/lstm.py", line 32, in import nutils File "/usr/local/lib/python2.7/dist-packages/ocrolib/nutils.py", line 25, in lstm_native = compile_and_load(lstm_utils) File "/usr/local/lib/python2.7/dist-packages/ocrolib/native.py", line 68, in compile_and_load return ctypes.CDLL(path) File "/usr/lib/python2.7/ctypes/__init__.py", line 365, in __init__ self._handle = _dlopen(self._name, mode) OSError: .pynative/cccd32009099f8dade0fe6cd205bf188.so: file too short Traceback (most recent call last): File "/usr/local/bin/ocropus-rpred", line 7, in import ocrolib File "/usr/local/lib/python2.7/dist-packages/ocrolib/__init__.py", line 12, in from common import * File "/usr/local/lib/python2.7/dist-packages/ocrolib/common.py", line 18, in import lstm File "/usr/local/lib/python2.7/dist-packages/ocrolib/lstm.py", line 32, in import nutils File "/usr/local/lib/python2.7/dist-packages/ocrolib/nutils.py", line 25, in lstm_native = compile_and_load(lstm_utils) File "/usr/local/lib/python2.7/dist-packages/ocrolib/native.py", line 68, in compile_and_load return ctypes.CDLL(path) File "/usr/lib/python2.7/ctypes/__init__.py", line 365, in __init__ self._handle = _dlopen(self._name, mode) OSError: .pynative/cccd32009099f8dade0fe6cd205bf188.so: file too short Traceback (most recent call last): File "/usr/local/bin/ocropus-hocr", line 8, in import ocrolib File "/usr/local/lib/python2.7/dist-packages/ocrolib/__init__.py", line 12, in from common import * File "/usr/local/lib/python2.7/dist-packages/ocrolib/common.py", line 18, in import lstm File "/usr/local/lib/python2.7/dist-packages/ocrolib/lstm.py", line 32, in import nutils File "/usr/local/lib/python2.7/dist-packages/ocrolib/nutils.py", line 25, in lstm_native = compile_and_load(lstm_utils) File "/usr/local/lib/python2.7/dist-packages/ocrolib/native.py", line 68, in compile_and_load return ctypes.CDLL(path) File "/usr/lib/python2.7/ctypes/__init__.py", line 365, in __init__ self._handle = _dlopen(self._name, mode) OSError: .pynative/cccd32009099f8dade0fe6cd205bf188.so: file too shortKarena ini masalah python, saya belum menandai OCROpus, haruskah saya menandainya juga?
Jangan mengirimkan solusi apa pun dari latihan di atas di sini, jika Anda ingin berkontribusi, buka halaman latihan yang sesuai
Uji keterampilan Python Anda dengan kuis w3resource
Ikuti kami di Facebook dan Twitter untuk pembaruan terkini.
Piton. Kiat Hari Ini
Perpustakaan waktu
Pustaka waktu menyediakan banyak fungsi dan metode terkait waktu dan baik untuk mengetahui apakah Anda sedang mengembangkan situs web atau aplikasi dan game atau bekerja dengan ilmu data atau perdagangan pasar keuangan. Waktu sangat penting dalam sebagian besar pengejaran pengembangan dan perpustakaan waktu standar Python sangat berguna untuk itu
Pengecualian adalah kesalahan yang terjadi selama eksekusi program. Python tidak akan memberi tahu Anda tentang kesalahan seperti kesalahan sintaksis (kesalahan tata bahasa), melainkan akan berhenti secara tiba-tiba
Keluar secara tiba-tiba buruk bagi pengguna akhir dan pengembang
Alih-alih penghentian darurat, Anda dapat menggunakan pernyataan coba kecuali untuk menangani masalah dengan benar. Penghentian darurat akan terjadi jika Anda tidak menangani pengecualian dengan benar
Kursus terkait. Kursus & Latihan Pemrograman Python Lengkap
Apa pengecualian dalam Python?
Python memiliki pengecualian bawaan yang dapat menghasilkan kesalahan. Jika terjadi kesalahan saat menjalankan program, itu disebut pengecualian
Jika pengecualian terjadi, jenis pengecualian ditampilkan. Pengecualian perlu ditangani atau program akan macet. Untuk menangani pengecualian, blok 1
2
3
4
5
6
_7 digunakan
Beberapa pengecualian yang mungkin pernah Anda lihat sebelumnya adalah 1
2
3
4
5
6
8, 1
2
3
4
5
6
9 atau try:
1 / 0
except ZeroDivisionError:
print('Divided by zero')
print('Should reach here')
0 tetapi masih banyak lagi
Semua pengecualian dalam Python mewarisi dari kelas BaseException. Jika Anda membuka shell interaktif Python dan mengetikkan pernyataan berikut, ini akan mencantumkan semua pengecualian bawaan
>>> dir(builtins)
Ide dari klausa try-exception adalah untuk menangani pengecualian (kesalahan saat runtime). Sintaks blok coba-kecuali adalah
12
3
4
try:
<do something>
except Exception:
<handle the error>
Gagasan blok coba-kecuali adalah ini
mencoba. kode dengan pengecualian untuk ditangkap. Jika pengecualian dimunculkan, itu langsung melompat ke blok kecuali
kecuali. kode ini hanya dijalankan jika pengecualian terjadi di blok try. Kecuali blok diperlukan dengan blok try, meskipun hanya berisi pernyataan pass
Ini dapat digabungkan dengan kata kunci lain dan akhirnya
kalau tidak. Kode di blok else hanya dieksekusi jika tidak ada pengecualian yang dimunculkan di blok try
akhirnya. Kode di blok akhirnya selalu dieksekusi, terlepas dari apakah pengecualian dimunculkan atau tidak
Menangkap Pengecualian dengan Python
Blok coba-kecuali dapat menangani pengecualian. Ini mencegah keluarnya program secara tiba-tiba karena kesalahan. Pada contoh di bawah ini kami sengaja memunculkan pengecualian
12
3
4
5
6
try:
1 / 0
except ZeroDivisionError:
print('Divided by zero')
print('Should reach here')
Setelah blok kecuali, program berlanjut. Tanpa blok coba-kecuali, baris terakhir tidak akan tercapai karena program akan mogok
$ python3 example.py
Divided by zero
Should reach here
Dalam contoh di atas, kami menangkap pengecualian khusus ZeroDivisionError. Anda dapat menangani pengecualian seperti ini
12
3
4
5
6
try:
open("fantasy.txt")
except:
print('Something went wrong')
print('Should reach here')
Anda dapat menulis logika yang berbeda untuk setiap jenis pengecualian yang terjadi
12
3
4
5
6
7
8
9
10
try:
# your code here
except FileNotFoundError:
# handle exception
except IsADirectoryError:
# handle exception
except:
# all other types of exceptions
print('Should reach here')
Kursus terkait. Kursus & Latihan Pemrograman Python Lengkap
coba-kecuali
Mari kita lakukan contoh dunia nyata dari blok coba-kecuali
Program meminta input pengguna numerik. Sebaliknya pengguna mengetik karakter di kotak input. Program biasanya akan macet. Tetapi dengan blok coba-kecuali itu dapat ditangani dengan baik
Pernyataan coba kecuali mencegah program mogok dan menanganinya dengan benar
12
3
4
5
6
1
2
3
4
1
Memasukkan input yang tidak valid, membuat program berjalan normal
Pernyataan coba kecuali dapat diperpanjang dengan kata kunci akhirnya, ini akan dieksekusi jika tidak ada pengecualian yang dilemparkan
2
3
4
21
2
3
4
3
Program melanjutkan eksekusi jika tidak ada pengecualian yang dilemparkan
Ada berbagai jenis pengecualian. ZeroDivisionError, NameError, TypeError, dan seterusnya. Terkadang modul menentukan pengecualiannya sendiri
Blok coba-kecuali berfungsi untuk panggilan fungsi juga
2
3
4
41
2
3
4
5
Ini keluaran
1
2
3
4
_6
Jika Anda seorang pemula, maka saya sangat merekomendasikan buku ini
coba akhirnya
Blok coba-kecuali dapat memiliki klausa akhirnya (opsional). Klausa akhirnya selalu dieksekusi
Jadi ide umumnya adalah
2
3
4
5
6
1
2
3
4
8
Contohnya. jika Anda membuka file, Anda ingin menutupnya, Anda dapat melakukannya di klausa akhirnya
12
3
4
_9try:
<do something>
except Exception:
<handle the error>
0
coba yang lain
Klausa else dijalankan jika dan hanya jika tidak ada pengecualian yang dimunculkan. Ini berbeda dengan klausa akhirnya yang selalu dieksekusi
12
3
4
_9try:
<do something>
except Exception:
<handle the error>
2
Keluaran
try:
<do something>
except Exception:
<handle the error>
3
Anda dapat menangkap banyak jenis pengecualian dengan cara ini, di mana klausa else dijalankan hanya jika tidak ada pengecualian yang terjadi
try:<do something>
except Exception:
<handle the error>
4try:
<do something>
except Exception:
<handle the error>
5
Naikkan Pengecualian
Pengecualian dimunculkan saat terjadi kesalahan. Tapi di Python Anda juga bisa memaksa pengecualian terjadi dengan kata kunci try:
1 / 0
except ZeroDivisionError:
print('Divided by zero')
print('Should reach here')
1
Semua jenis pengecualian dapat dimunculkan
12
3
4
try:
<do something>
except Exception:
<handle the error>
7try:
<do something>
except Exception:
<handle the error>
8try:
<do something>
except Exception:
<handle the error>
9
Kursus terkait. Kursus & Latihan Pemrograman Python Lengkap
Pengecualian bawaan
Daftar Pengecualian Bawaan Python ditunjukkan di bawah ini. Daftar ini menunjukkan Pengecualian dan mengapa itu dilempar (dibesarkan)Pengecualian Penyebab ErrorAssertionErrorif try:
1 / 0
except ZeroDivisionError:
print('Divided by zero')
print('Should reach here')
2 pernyataan gagal. Penugasan atau referensi atribut AttributeErrorif gagal. EOFerrorif fungsi try:
1 / 0
except ZeroDivisionError:
print('Divided by zero')
print('Should reach here')
3 mencapai kondisi akhir file. FloatingPointErrorif operasi floating point gagal. GeneratorExitRaise jika metode try:
1 / 0
except ZeroDivisionError:
print('Divided by zero')
print('Should reach here')
4 generator dipanggil. ImportErrorif modul yang diimpor tidak ditemukan. IndexErrorif indeks urutan berada di luar jangkauan. KeyErrorif kunci tidak ditemukan dalam kamus. KeyboardInterruptif jika pengguna menekan tombol interupsi (Ctrl+c atau hapus). MemoryErrorif suatu operasi kehabisan memori. NameErrorif variabel tidak ditemukan dalam lingkup lokal atau global. Metode abstrak NotImplementedErrorby. Operasi sistem OSErrorif menyebabkan kesalahan terkait sistem. OverflowErrorif hasil operasi aritmatika terlalu besar untuk direpresentasikan. ReferenceErrorif proxy referensi yang lemah digunakan untuk mengakses referensi sampah yang dikumpulkan. RuntimeErrorif kesalahan tidak termasuk dalam kategori lain. Fungsi StopIterationby try:
1 / 0
except ZeroDivisionError:
print('Divided by zero')
print('Should reach here')
5 untuk menunjukkan bahwa tidak ada lagi item yang akan dikembalikan oleh iterator. SyntaxErrorby parser jika kesalahan sintaks ditemukan. IndentationError jika ada indentasi yang salah. Lekukan TabErrorif terdiri dari tab dan spasi yang tidak konsisten. Penerjemah SystemErrorif mendeteksi kesalahan internal. SystemExitby try:
1 / 0
except ZeroDivisionError:
print('Divided by zero')
print('Should reach here')
6 fungsi. TypeErrorif suatu fungsi atau operasi diterapkan ke objek dengan tipe yang salah. UnboundLocalErrorif referensi dibuat ke variabel lokal dalam fungsi atau metode, tetapi tidak ada nilai yang terikat ke variabel itu. UnicodeErrorif terjadi kesalahan pengkodean atau pengodean terkait Unicode. UnicodeEncodeErrorif terjadi kesalahan terkait Unicode selama penyandian. UnicodeDecodeErrorif terjadi kesalahan terkait Unicode selama decoding. UnicodeTranslateErrorif terjadi kesalahan terkait Unicode selama menerjemahkan. ValueErrorif suatu fungsi mendapatkan argumen dengan tipe yang benar tetapi nilai yang tidak tepat. ZeroDivisionError jika operan kedua dari operasi pembagian atau modulo adalah nol. Pengecualian yang Ditentukan Pengguna
Python memiliki banyak jenis pengecualian standar, tetapi mungkin tidak selalu sesuai dengan tujuan Anda
Program Anda dapat memiliki jenis pengecualian Anda sendiri
Untuk membuat pengecualian yang ditentukan pengguna, Anda harus membuat kelas yang mewarisi dari Pengecualian
12
3
4
1
2
3
4
5
6
1
Anda membuat pengecualian yang ditentukan pengguna bernama LunchError pada kode di atas. Anda dapat memunculkan pengecualian baru ini jika terjadi kesalahan
Keluarkan kesalahan khusus Anda
1
2
3
4
5
6
_2
Program Anda dapat memiliki banyak pengecualian yang ditentukan pengguna. Program di bawah memberikan pengecualian berdasarkan uang proyek baru
12
3
4
5
6
_31
2
3
4
5
6
4
Berikut adalah beberapa contoh operasi
1
2
3
4
5
6
_5
1
2
3
4
5
6
_6
Merupakan praktik yang baik untuk meletakkan semua pengecualian yang ditentukan pengguna dalam file terpisah (pengecualian. py atau kesalahan. py). Ini adalah praktik umum dalam modul standar juga