ಫೈಲ್ ಹ್ಯಾಂಡ್ಲಿಂಗ್ನಲ್ಲಿ ದೋಷ ನಿರ್ವಹಣೆ
ಫೈಲ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ, ಹಲವಾರು ದೋಷಗಳು (exceptions) ಸಂಭವಿಸಬಹುದು. ಉದಾಹರಣೆಗೆ, ನೀವು ಓದಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರುವ ಫೈಲ್ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದಿರಬಹುದು, ಅಥವಾ ನಿಮಗೆ ಫೈಲ್ ಅನ್ನು ಬರೆಯಲು ಅನುಮತಿ ಇಲ್ಲದಿರಬಹುದು. ಈ ದೋಷಗಳನ್ನು ಸರಿಯಾಗಿ ನಿರ್ವಹಿಸದಿದ್ದರೆ, ನಿಮ್ಮ ಪ್ರೋಗ್ರಾಮ್ ಕ್ರ್ಯಾಶ್ ಆಗುತ್ತದೆ.
try...except ಬ್ಲಾಕ್ಗಳನ್ನು ಬಳಸಿ, ನಾವು ಈ ದೋಷಗಳನ್ನು ಹಿಡಿದು, ಬಳಕೆದಾರರಿಗೆ ಅರ್ಥಪೂರ್ಣ ಸಂದೇಶಗಳನ್ನು ನೀಡಬಹುದು ಮತ್ತು ಪ್ರೋಗ್ರಾಮ್ ಅನ್ನು ಸುರಕ್ಷಿತವಾಗಿ ಮುಂದುವರಿಸಬಹುದು.
ಸಾಮಾನ್ಯ ಫೈಲ್ ಹ್ಯಾಂಡ್ಲಿಂಗ್ ದೋಷಗಳು
1. FileNotFoundError
ನೀವು ತೆರೆಯಲು ಪ್ರಯತ್ನಿಸುತ್ತಿರುವ ಫೈಲ್ ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ಪಾತ್ನಲ್ಲಿ ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದಿದ್ದಾಗ ಈ ದೋಷ ಸಂಭವಿಸುತ್ತದೆ.
try:
with open('non_existent_file.txt', 'r') as f:
content = f.read()
except FileNotFoundError:
print("ದೋಷ: ಕ್ಷಮಿಸಿ, ಆ ಫೈಲ್ ಕಂಡುಬಂದಿಲ್ಲ.")
2. PermissionError
ಫೈಲ್ ಅನ್ನು ತೆರೆಯಲು, ಓದಲು, ಅಥವಾ ಬರೆಯಲು ನಿಮಗೆ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಮಟ್ಟದಲ್ಲಿ ಅನುಮತಿ ಇಲ್ಲದಿದ್ದಾಗ ಈ ದೋಷ ಸಂಭವಿಸುತ್ತದೆ.
# ಉದಾಹರಣೆಗೆ, ರೂಟ್ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ಫೈಲ್ ರಚಿಸಲು ಪ್ರಯತ್ನಿಸುವುದು (ಸಾಮಾನ್ಯವಾಗಿ ಅನುಮತಿ ಇರುವುದಿಲ್ಲ)
try:
with open('/new_file.txt', 'w') as f:
f.write("test")
except PermissionError:
print("ದೋಷ: ಈ ಸ್ಥಳದಲ್ಲಿ ಫೈಲ್ ರಚಿಸಲು ಅನುಮತಿ ಇಲ್ಲ.")
3. IsADirectoryError
ನೀವು ಫೈಲ್ನ ಬದಲು ಡೈರೆಕ್ಟರಿಯನ್ನು ತೆರೆಯಲು ಪ್ರಯತ್ನಿಸಿದಾಗ ಈ ದೋಷ ಸಂಭವಿಸುತ್ತದೆ.
try:
# 'docs' ಒಂದು ಡೈರೆಕ್ಟರಿ, ಫೈಲ್ ಅಲ್ಲ
with open('docs', 'r') as f:
content = f.read()
except IsADirectoryError:
print("ದೋಷ: ನೀವು ಫೈಲ್ನ ಬದಲು ಡೈರೆಕ್ಟರಿಯನ್ನು ತೆರೆಯಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದೀರಿ.")
4. io.UnsupportedOperation
ತಪ್ಪಾದ ಮೋಡ್ನಲ್ಲಿ ಕಾರ್ಯಾಚರಣೆ ನಡೆಸಲು ಪ್ರಯತ್ನಿಸಿದಾಗ ಈ ದೋಷ ಸಂಭವಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಓದುವ ಮೋಡ್ನಲ್ಲಿ ('r') ತೆರೆದ ಫೈಲ್ಗೆ ಬರೆಯಲು ಪ್ರಯತ್ನಿಸುವುದು.
try:
with open('sample.txt', 'r') as f:
f.write("Hello")
except (IOError, ValueError) as e: # ಹಳೆಯ ಪೈಥಾನ್ ಆವೃತ್ತಿಗಳಲ್ಲಿ IOError/ValueError ಬರಬಹುದು
print(f"ದೋಷ: ಬೆಂಬಲಿಸದ ಕಾರ್ಯಾಚರಣೆ. {e}")
except Exception as e: # ಆಧುನಿಕ ಪೈಥಾನ್ನಲ್ಲಿ io.UnsupportedOperation
print(f"ದೋಷ: {e}")
ದೃಢವಾದ ಫೈಲ್ ಹ್ಯಾಂಡ್ಲಿಂಗ್
ಒಂದು ಉತ್ತಮ ಅಭ್ಯಾಸವೆಂದರೆ, ನಿರ್ದಿಷ್ಟ ದೋಷಗಳನ್ನು ಹಿಡಿಯುವುದು ಮತ್ತು ಬಳಕೆದಾರರಿಗೆ ಸ್ಪಷ್ಟವಾದ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ನೀಡುವುದು.
file_path = 'data/my_data.txt'
try:
with open(file_path, 'r', encoding='utf-8') as f:
print("ಫೈಲ್ ಯಶಸ್ವಿಯಾಗಿ ತೆರೆಯಲಾಗಿದೆ.")
content = f.read()
# ಇಲ್ಲಿ ಡೇಟಾದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಿ
print(content)
except FileNotFoundError:
print(f"ದೋಷ: '{file_path}' ಎಂಬ ಫೈಲ್ ಕಂಡುಬಂದಿಲ್ಲ.")
except PermissionError:
print(f"ದೋಷ: '{file_path}' ಫೈಲ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಅನುಮತಿ ಇಲ್ಲ.")
except Exception as e:
# ಅನಿರೀಕ್ಷಿತ ದೋಷಗಳಿಗಾಗಿ
print(f"ಒಂದು ಅನಿರೀಕ್ಷಿತ ದೋಷ ಸಂಭವಿಸಿದೆ: {e}")
finally:
print("ಫೈಲ್ ಹ್ಯಾಂಡ್ಲಿಂಗ್ ಕಾರ್ಯಾಚರಣೆ ಮುಗಿದಿದೆ.")