Rumah >pembangunan bahagian belakang >Tutorial Python >IOError: Bagaimana untuk menyelesaikan ralat input/output Python?
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.
Terdapat banyak jenis ralat berkaitan input/output dalam Python, yang paling biasa ialah tiga yang berikut.
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'
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'
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'
Dalam beberapa kes, Python juga akan menimbulkan pengecualian OSError, yang bermaksud ralat sistem pengendalian umum telah berlaku.
Sekarang kita tahu jenis IOErrors yang paling biasa dalam Python, seterusnya, kita akan meneroka kaedah tentang cara untuk menyelesaikan atau mengelakkan ralat ini.
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')
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()
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
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')
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.
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.')
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!