Penanganan file dalam python pynative

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 short

Karena 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

1
2
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

1
2
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

1
2
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

1
2
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

1
2
3
4
5
6
1
2
3
4
1

Memasukkan input yang tidak valid, membuat program berjalan normal

Penanganan file dalam python pynative

Pernyataan coba kecuali dapat diperpanjang dengan kata kunci akhirnya, ini akan dieksekusi jika tidak ada pengecualian yang dilemparkan

1
2
3
4
2
1
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

1
2
3
4
4
1
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

1
2
3
4
5
6
1
2
3
4
8

Contohnya. jika Anda membuka file, Anda ingin menutupnya, Anda dapat melakukannya di klausa akhirnya

1
2
3
4
_9
try:
<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

1
2
3
4
_9
try:
<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>
4
try:
<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

1
2
3
4
try:
<do something>
except Exception:
<handle the error>
7
try:
<do something>
except Exception:
<handle the error>
8
try:
<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

1
2
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

1
2
3
4
5
6
_3
1
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

Bagaimana Anda menulis penanganan file dengan Python?

Penanganan File dengan Python .
Hanya Baca ('r'). Mode ini membuka file teks hanya untuk dibaca. .
Baca dan Tulis ('r+'). Metode ini membuka file untuk membaca dan menulis. .
Tulis Saja ('w'). Mode ini membuka file hanya untuk menulis. .
Tulis dan Baca ('w+'). Mode ini membuka file untuk membaca dan menulis

Apa itu Python Pynative?

Python adalah bahasa pemrograman yang ditafsirkan dan bertujuan umum yang menekankan keterbacaan kode dengan penggunaan lekukan yang signifikan . Pendekatan berorientasi objeknya membantu pemrogram menulis kode yang jelas dan logis untuk proyek skala kecil dan besar.

Apa sajakah jenis penanganan file dengan Python?

Ada dua jenis file yang dapat ditangani dengan python, file teks biasa dan file biner (ditulis dalam bahasa biner, 0s, . File teks. Dalam jenis file ini, Setiap baris teks diakhiri dengan karakter khusus yang disebut EOL (End of Line), yang merupakan karakter baris baru ('\n') di python secara default.

Modul mana yang digunakan untuk penanganan file dengan Python?

Python memiliki modul io yang berisi berbagai fungsi untuk menangani file. Fungsi ini mengembalikan objek file yang disebut pegangan file yang disimpan dalam variabel file_object.