Sử dụng khối try/except
để bỏ qua ngoại lệ KeyError
trong Python. Khối except
sẽ chỉ chạy nếu một ngoại lệ KeyError
được đưa ra trong khối try
. Bạn có thể sử dụng từ khóa pass
để bỏ qua ngoại lệ
Lỗi là nguyên nhân tồn tại của lập trình viên. Bạn viết một đoạn mã tuyệt vời, sẵn sàng thực thi nó và xây dựng một mô hình máy học mạnh mẽ, sau đó gặp sự cố. Python đưa ra một lỗi không mong muốn, chấm dứt hy vọng thực thi mã nhanh chóng của bạn
Mỗi người trong chúng ta đều phải đối mặt với vấn đề này và trở thành một lập trình viên giỏi hơn từ nó. Xử lý các lỗi và lỗi là điều giúp chúng tôi tự tin về lâu dài và dạy cho chúng tôi những bài học quý giá trong quá trình thực hiện
Chúng ta có một số quy tắc khi viết chương trình bằng bất kỳ ngôn ngữ lập trình nào, chẳng hạn như không sử dụng dấu cách khi định nghĩa tên biến, thêm dấu hai chấm [. ] sau câu lệnh if, v.v. Nếu chúng tôi không tuân theo các quy tắc này, chúng tôi sẽ gặp phải Lỗi cú pháp và chương trình của chúng tôi từ chối thực thi cho đến khi chúng tôi loại bỏ các lỗi đó
Nhưng có những trường hợp chương trình đúng về mặt cú pháp và nó vẫn báo lỗi khi chúng ta cố thực thi chương trình. Những gì đang xảy ra ở đây? . Và xử lý những lỗi này được gọi là xử lý ngoại lệ
Chúng ta sẽ nói tất cả về xử lý ngoại lệ trong Python tại đây
Mục lục
- Ưu điểm của xử lý ngoại lệ
- Ngoại lệ phổ biến
- Tuyên bố thử và ngoại trừ
- tuyên bố khác
- Tuyên bố cuối cùng
- Trường hợp sử dụng thực tế của Xử lý ngoại lệ
Ưu điểm của xử lý ngoại lệ
Tại sao bạn nên học xử lý ngoại lệ?
- Giả sử bạn đã viết một tập lệnh để đọc hàng nghìn tệp có trong nhiều thư mục. Bây giờ, có thể có một số loại lỗi ở đó, chẳng hạn như loại tệp bị thiếu hoặc có định dạng không chính xác hoặc tệp có sẵn trong các tiện ích mở rộng khác nhau. Trong trường hợp đó, việc mở tất cả các tệp và viết một tập lệnh tương ứng là không khả thi. Xử lý ngoại lệ cho phép chúng tôi xác định nhiều điều kiện. Ví dụ: nếu định dạng sai, hãy sửa định dạng trước rồi thử đọc tệp. Nếu không, hãy bỏ qua việc đọc tệp đó và tạo một tệp nhật ký để chúng tôi có thể xử lý sau
- Thứ hai, giả sử chúng ta đang thu thập dữ liệu nhà hàng từ một trang web và tập lệnh của chúng ta sẽ tìm kiếm tên, đánh giá và địa chỉ của nhà hàng. Vì một số lý do, địa chỉ của nhà hàng bị thiếu trên trang web. Trong trường hợp này, nếu chúng tôi không xử lý các ngoại lệ, tập lệnh của chúng tôi có thể dừng giữa chừng, vì vậy trong khi thu thập dữ liệu với số lượng lớn, điều cần thiết là chúng tôi phải xử lý các ngoại lệ
Ngoại lệ phổ biến
Đây là danh sách các ngoại lệ phổ biến mà bạn sẽ gặp trong Python
ZeroDivisionError
. Nó tăng lên khi bạn cố gắng chia một số cho 0ImportError
. Nó xuất hiện khi bạn cố gắng nhập thư viện chưa được cài đặt hoặc bạn đã cung cấp tên sai- ________số 8. Xảy ra khi không tìm thấy chỉ mục trong chuỗi. Ví dụ: nếu độ dài của danh sách là 10 và bạn đang cố truy cập chỉ mục thứ 11 từ danh sách đó thì bạn sẽ gặp lỗi này
IndentationError
. Tăng lên khi thụt đầu dòng không được chỉ định đúng cáchKeyError
0. Xảy ra khi hàm tích hợp sẵn cho một loại dữ liệu có loại đối số hợp lệ, nhưng các đối số có giá trị không hợp lệ được chỉ địnhKeyError
1. Lớp cơ sở cho tất cả các ngoại lệ. Nếu bạn không chắc chắn về ngoại lệ nào có thể xảy ra, bạn có thể sử dụng lớp cơ sở. Nó sẽ xử lý tất cả chúng
Bạn có thể đọc về các ngoại lệ phổ biến hơn tại đây
Xử lý ngoại lệ trong Python. Tuyên bố thử và ngoại trừ
Hãy xác định hàm chia hai số a và b. Nó sẽ hoạt động tốt nếu giá trị của b khác không nhưng nó sẽ tạo ra lỗi nếu giá trị của b bằng không
Chúng ta có thể xử lý việc này bằng cách sử dụng câu lệnh try and except. Đầu tiên, mệnh đề try sẽ được thực thi, đó là câu lệnh nằm giữa từ khóa try và except
Nếu không có ngoại lệ xảy ra, mệnh đề ngoại trừ sẽ bị bỏ qua. Mặt khác, nếu một ngoại lệ xảy ra trong quá trình thực thi mệnh đề try, thì phần còn lại của các câu lệnh try sẽ bị bỏ qua
Xử lý ngoại lệ trong Python. tuyên bố khác
Trong Python, chúng ta cũng có thể hướng dẫn chương trình thực thi một số dòng mã nhất định nếu không có ngoại lệ xảy ra bằng cách sử dụng mệnh đề khác. Bây giờ, nếu không có ngoại lệ nào xảy ra trong đoạn mã trên, chúng tôi muốn in “Không có lỗi xảy ra. ”
Hãy xem làm thế nào để làm điều này
Xử lý ngoại lệ trong Python. Tuyên bố cuối cùng
Bây giờ, điều gì sẽ xảy ra nếu chúng ta cần một số loại hành động sẽ thực thi cho dù lỗi có xảy ra hay không [như duy trì nhật ký]. Đối với điều này, chúng ta có mệnh đề cuối cùng trong Python. Nó sẽ luôn được thực thi cho dù chương trình có bất kỳ ngoại lệ nào hay không
Chúng ta sẽ xem cách chúng ta có thể sử dụng mệnh đề cuối cùng để ghi nhật ký ở phần sau của bài viết này
Bây giờ, trong ví dụ trên, tôi muốn in giá trị của a và b sau mỗi lần thực hiện bất kể có xảy ra lỗi hay không. Hãy xem làm thế nào để làm điều đó
Trường hợp sử dụng thực tế của Xử lý ngoại lệ trong Python
Cho đến nay, chúng tôi đã thấy xử lý ngoại lệ trên một số dữ liệu ngẫu nhiên. Làm thế nào về việc tăng đòn bẩy lên một bậc và hiểu điều này bằng cách sử dụng một ví dụ thực tế?
Chúng tôi có dữ liệu chứa thông tin chi tiết về nhân viên như trình độ học vấn, tuổi tác, số lần đào tạo đã thực hiện, v.v. Dữ liệu được chia thành nhiều thư mục theo khu vực. Thông tin chi tiết của các nhân viên thuộc cùng một khu vực được lưu trữ trong cùng một tệp
Bây giờ, nhiệm vụ của chúng ta là đọc tất cả các tệp và nối chúng lại để tạo thành một tệp duy nhất. Hãy bắt đầu bằng cách nhập một số thư viện cần thiết
Lấy cấu trúc thư mục
Để xem cấu trúc thư mục, chúng tôi sẽ sử dụng thư viện toàn cầu và để đọc các tệp CSV, chúng tôi sẽ sử dụng thư viện Pandas
Xem cấu trúc thư mục bằng toàn cầu. chức năng toàn cầu và đường dẫn của thư mục đích. Bạn có thể tải xuống cấu trúc thư mục tại đây
Chúng ta có thể thấy rằng tên thư mục được biểu thị dưới dạng một số số và trong bước tiếp theo sẽ đi qua từng thư mục và xem các tệp hiện có
Trong mỗi thư mục, có một tệp CSV chứa thông tin chi tiết về nhân viên của khu vực cụ thể đó. Bạn có thể mở và xem bất kỳ tệp CSV nào. Dưới đây là hình ảnh về giao diện của dữ liệu trong khu vực_1. tệp csv. Nó chứa thông tin chi tiết của nhân viên thuộc khu vực 1
đọc các tập tin
Bây giờ, chúng tôi biết rằng có một mẫu trong cấu trúc thư mục và tên tệp. Trong thư mục n có tên tệp CSV là region_n. Vì vậy, bây giờ chúng tôi sẽ cố gắng đọc tất cả các tệp này bằng vòng lặp
Chúng tôi biết rằng số lượng tối đa là 34, vì vậy chúng tôi sẽ sử dụng vòng lặp for để lặp và đọc các tệp theo thứ tự
Bạn có thể thấy rằng tệp vùng_7 không có. Vì vậy, một trong những cách đơn giản hơn để giải quyết vấn đề này là đặt một điều kiện nếu trong chương trình – nếu tên thư mục là 7 thì bỏ qua việc đọc từ tệp đó
Nhưng nếu chúng ta phải đọc hàng ngàn tệp cùng nhau thì sao?
Ở đây, chúng ta sẽ sử dụng câu lệnh try and except để xử lý các lỗi. Nếu có bất kỳ ngoại lệ nào trong thời gian chạy khi đọc bất kỳ tệp nào, chúng tôi sẽ bỏ qua bước đó và tiếp tục đọc thư mục tiếp theo. Chúng tôi sẽ in tên tệp với “Không tìm thấy tệp. ” nếu lỗi là FileNotFoundError và in tên tệp với “Another Error. ” nếu có bất kỳ lỗi nào khác xảy ra
Chúng tôi có thể thấy rằng chúng tôi đã gặp một lỗi khác trong tệp số 32. Hãy thử đọc tệp này một cách riêng biệt
Có một số vấn đề với định dạng của Tệp 32. Nếu bạn mở tệp region_32. csv, bạn sẽ thấy rằng có một số nhận xét được thêm vào đầu tệp và chúng tôi có thể đọc tệp đó bằng cách sử dụng tham số bỏ qua
Hãy xem cách xử lý việc này
Câu lệnh Thử, Ngoại trừ và Khác
Chúng tôi sẽ tạo hai biến boolean – parse_error, file_not_found – và khởi tạo cả hai biến là Sai khi bắt đầu mỗi lần lặp. Vì vậy, nếu chúng tôi nhận được FileNotFoundError, thì chúng tôi sẽ đặt file_not_found là True
Sau đó, chúng tôi sẽ in tệp cụ thể đó bị thiếu và bỏ qua lần lặp đó. Nếu chúng tôi nhận được ParserError, thì chúng tôi sẽ đặt parse_error thành True và in rằng tệp cụ thể có định dạng không chính xác và đọc lại tệp bằng cách sử dụng tham số bỏ qua
Bây giờ, nếu không có ngoại lệ xảy ra, thì mã trong câu lệnh khác sẽ thực thi. Trong câu lệnh khác, chúng tôi sẽ nối khung dữ liệu vào danh sách khung dữ liệu
Câu lệnh Thử, Ngoại trừ, Khác và Cuối cùng
Giả sử bạn muốn tạo một tệp nhật ký để theo dõi xem tệp nào đúng và tệp nào có lỗi. Đây là một trường hợp sử dụng của câu lệnh cuối cùng. Cho dù bạn có gặp lỗi hay không, câu lệnh cuối cùng sẽ thực thi
Vì vậy, trong mệnh đề cuối cùng, chúng tôi sẽ ghi vào tệp liên quan đến trạng thái của tệp ở mỗi lần lặp
Ghi chú kết thúc
Tôi sử dụng xử lý ngoại lệ trong khi thu thập dữ liệu từ nhiều trang web. Tôi muốn biết cách bạn sử dụng xử lý ngoại lệ, vì vậy hãy bình luận bên dưới những suy nghĩ của bạn và chia sẻ chúng với cộng đồng
Nếu bạn thấy bài viết này có nhiều thông tin, hãy chia sẻ nó với bạn bè của bạn và bình luận bên dưới các câu hỏi và phản hồi của bạn. Tôi đã liệt kê một số bài viết tuyệt vời liên quan đến Python và khoa học dữ liệu bên dưới để bạn tham khảo