Rumah  >  Artikel  >  pembangunan bahagian belakang  >  IOError: Bagaimana untuk menyelesaikan ralat input/output Python?

IOError: Bagaimana untuk menyelesaikan ralat input/output Python?

王林
王林asal
2023-06-24 19:04:083378semak imbas

Python ialah bahasa pengaturcaraan popular yang digunakan secara meluas untuk pemprosesan dan analisis data yang sangat maju, dan ralat input/output (IOError) adalah salah satu ralat program Python yang biasa. Apabila program Python cuba melakukan operasi seperti membaca atau menulis fail, IOError dibangkitkan jika masalah berkaitan input/output berlaku. Walau bagaimanapun, ralat ini boleh berlaku walaupun anda mengikuti langkah pengendalian fail yang betul. Artikel ini akan meneroka cara menyelesaikan ralat input/output Python.

Jenis IOerror

Terdapat banyak jenis ralat berkaitan input/output dalam Python, yang paling biasa ialah tiga yang berikut.

1. FileNotFoundError

FileNotFoundError dibangkitkan apabila Python cuba membuka fail tetapi tidak menemui fail itu. Ini biasanya disebabkan oleh laluan fail yang salah, nama fail atau sambungan fail yang salah, fail tidak wujud dan isu hak akses.

Contohnya:

>>> f = open('nonexistentfile.txt', 'r')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'nonexistentfile.txt'

2 PermissionError

Jika Python cuba membuka fail yang tidak mempunyai kebenaran akses, pengecualian PermissionError akan dinaikkan. Ralat ini biasanya berlaku apabila cuba membaca atau menulis ke fail yang dilindungi.

Contohnya:

>>> f = open('/etc/shadow', 'r')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
PermissionError: [Errno 13] Permission denied: '/etc/shadow'

3 IOError

Apabila Python tidak boleh membuka fail, membaca fail atau menulis fail, pengecualian IOError dibangkitkan. Ringkasnya, ini adalah ralat berkaitan operasi I/O. Ralat ini biasanya disebabkan oleh fail yang dialihkan atau dipadamkan.

Contohnya:

>>> f = open('testfile.txt', 'r')
[Errno 2] No such file or directory: 'testfile.txt'

4. OSError

Dalam beberapa kes, Python juga akan menimbulkan pengecualian OSError, yang bermaksud ralat sistem pengendalian umum telah berlaku.

Kaedah untuk Menyelesaikan IOErrors

Sekarang kita tahu jenis IOErrors yang paling biasa dalam Python, seterusnya, kita akan meneroka kaedah tentang cara untuk menyelesaikan atau mengelakkan ralat ini.

1. Cari laluan fail dan ralat input nama fail

Apabila anda cuba membuka atau mengendalikan fail, pastikan laluan fail dan nama fail yang anda masukkan adalah betul. Laluan dan nama fail hendaklah sepadan dengan laluan fail dan nama fail sebenar. Jika anda tidak pasti, pastikan fail itu wujud dahulu.

Contohnya:

f = open('/path/to/existing/file.txt', 'r')

2 Sahkan bahawa pemegang fail ditutup

Sama ada anda sedang membaca fail atau menulis fail, pastikan anda menutup pemegang fail selepas menggunakan fail. Ini membebaskan sumber sistem dan memastikan fail dimanipulasi dengan betul. Jika pemegang fail tidak ditutup dengan betul, pengecualian IOError mungkin dinaikkan.

Contoh:

with open('testfile.txt', 'w') as f:
    f.write('Hello world')
f.close()

3. Sahkan kebenaran akses fail

Apabila cuba membaca atau menulis fail yang memerlukan kebenaran akses, pastikan fail telah diberikan kebenaran yang betul. Anda boleh menggunakan arahan chmod untuk menukar kebenaran fail untuk membaca dan menulis.

Contohnya:

chmod 777 myfile.txt

4 Sahkan bahawa fail itu sudah wujud

Apabila Python cuba membuka direktori atau fail yang terletak dalam direktori yang tidak wujud, ia akan menimbulkan pengecualian FileNotFoundError. Sila pastikan fail dibuat dan wujud dalam laluan yang ditentukan.

Contoh:

f = open('testfile.txt', 'w')

5. Mengendalikan Pengecualian

Jika pengecualian tidak dikendalikan dalam kod anda, maka apabila IOError berlaku, Python akan mengganggu pelaksanaan program dengan ralat jurubahasa. Untuk mengendalikan pengecualian dengan anggun, gunakan try kecuali untuk mengendalikan IOError dan jadikan program anda lebih mantap.

Contohnya:

try:
    f = open('testfile.txt', 'r')
except IOError:
    print('Error: file not found.')
else:
    print(f.read())
    f.close()

Dalam contoh di atas, apabila fail tidak ditemui, IOError ditangkap dan dikendalikan supaya program tidak mengganggu pelaksanaan. Jika fail itu wujud, fail tersebut akan dibaca.

6. Gunakan modul os.path

Jika anda menggunakan Python 3.x, elakkan menggunakan fungsi os.path.exist() untuk melihat sama ada fail wujud. Dalam Python 3.x, apabila anda menggunakan fungsi os.path.exist(), ia masih mengembalikan True walaupun fail tidak wujud. Sebaliknya, gunakan os.path.isfile() untuk menyemak sama ada fail itu wujud.

Contoh:

import os
  
if os.path.isfile('/path/to/file.txt'):
    print('File exists.')
else:
    print('File does not exist.')

Kesimpulan

Dalam artikel ini, kami mempelajari tentang jenis ralat input/output dalam Python dan penyelesaiannya. Banyak IOError biasa boleh dielakkan dengan mengikut langkah pengendalian fail yang betul, memastikan laluan fail dan nama fail ditemui dengan betul, dan mengesahkan kebenaran akses fail. Di samping itu, menggunakan try kecuali untuk mengendalikan pengecualian IOError boleh mengendalikan IOError dengan anggun dan menjadikan program lebih mantap.

Atas ialah kandungan terperinci IOError: Bagaimana untuk menyelesaikan ralat input/output Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn