open() ಮತ್ತು close()
ಪೈಥಾನ್ನಲ್ಲಿ ಫೈಲ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು, open() ಫಂಕ್ಷನ್ ಮೊದಲ ಹೆಜ್ಜೆಯಾಗಿದೆ. ಇದು ಫೈಲ್ ಅನ್ನು ತೆರೆದು, ಅದರೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಒಂದು ಫೈಲ್ ಆಬ್ಜೆಕ್ಟ್ (ಅಥವಾ ಫೈಲ್ ಹ್ಯಾಂಡಲ್) ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಕೆಲಸ ಮುಗಿದ ನಂತರ, close() ಮೆಥಡ್ ಬಳಸಿ ಫೈಲ್ ಅನ್ನು ಮುಚ್ಚುವುದು ಅತ್ಯಗತ್ಯ.
open() ಫಂಕ್ಷನ್
open() ಫಂಕ್ಷನ್ ಹಲವಾರು ಆರ್ಗ್ಯುಮೆಂಟ್ಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ, ಆದರೆ ಪ್ರಮುಖವಾದವುಗಳು ಇವು:
file: ತೆರೆಯಬೇಕಾದ ಫೈಲ್ನ ಹೆಸರು ಮತ್ತು ಪಾತ್ (path).
- mode: ಫೈಲ್ ಅನ್ನು ಯಾವ ಉದ್ದೇಶಕ್ಕಾಗಿ ತೆರೆಯಲಾಗುತ್ತಿದೆ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸುವ ಮೋಡ್ (ಉದಾ: ಓದಲು, ಬರೆಯಲು). ಡೀಫಾಲ್ಟ್ ಮೋಡ್ 'r' (ಓದುವುದು).
- encoding: ಫೈಲ್ನ ಅಕ್ಷರ ಎನ್ಕೋಡಿಂಗ್. ಕನ್ನಡ ಅಥವಾ ಇತರ ಭಾಷೆಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ 'utf-8' ಅನ್ನು ಬಳಸುವುದು ಉತ್ತಮ ಅಭ್ಯಾಸ.
ಉದಾಹರಣೆ:
# 'data.txt' ಫೈಲ್ ಅನ್ನು ಓದುವ ಮೋಡ್ನಲ್ಲಿ ತೆರೆಯುವುದು
try:
file_object = open('data.txt', 'r', encoding='utf-8')
# ಈಗ file_object ಬಳಸಿ ಫೈಲ್ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಬಹುದು
print("ಫೈಲ್ ಯಶಸ್ವಿಯಾಗಿ ತೆರೆಯಲಾಗಿದೆ.")
except FileNotFoundError:
print("ದೋಷ: ಫೈಲ್ ಕಂಡುಬಂದಿಲ್ಲ.")
close() ಮೆಥಡ್
ಫೈಲ್ನೊಂದಿಗೆ ನಿಮ್ಮ ಕೆಲಸ ಮುಗಿದ ನಂತರ, file.close() ಅನ್ನು ಕರೆಯುವುದು ಬಹಳ ಮುಖ್ಯ.
close() ಏಕೆ ಮುಖ್ಯ?
1. ಸಂಪನ್ಮೂಲಗಳ ಬಿಡುಗಡೆ (Resource Release): ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ಗಳು ಒಂದೇ ಸಮಯದಲ್ಲಿ ತೆರೆಯಬಹುದಾದ ಫೈಲ್ಗಳ ಸಂಖ್ಯೆಯ ಮೇಲೆ ಮಿತಿಯನ್ನು ಹೊಂದಿರುತ್ತವೆ. close() ಮಾಡುವುದರಿಂದ ಆ ಸಂಪನ್ಮೂಲವು ಬೇರೆ ಪ್ರೊಸೆಸ್ಗಳಿಗೆ ಲಭ್ಯವಾಗುತ್ತದೆ.
2. ಡೇಟಾ ಬಫರಿಂಗ್ (Data Buffering): ನೀವು ಫೈಲ್ಗೆ ಬರೆಯುವಾಗ, ಕಾರ್ಯಕ್ಷಮತೆಗಾಗಿ ಡೇಟಾವನ್ನು ತಕ್ಷಣವೇ ಡಿಸ್ಕ್ಗೆ ಬರೆಯಲಾಗುವುದಿಲ್ಲ; ಅದನ್ನು ಬಫರ್ನಲ್ಲಿ ಇರಿಸಲಾಗುತ್ತದೆ. close() ಮೆಥಡ್, ಬಫರ್ನಲ್ಲಿರುವ ಎಲ್ಲಾ ಡೇಟಾವನ್ನು ಫೈಲ್ಗೆ ಬರೆಯಲಾಗಿದೆಯೆ ಎಂದು ಖಚಿತಪಡಿಸುತ್ತದೆ. close() ಮಾಡದಿದ್ದರೆ, ಡೇಟಾ ನಷ್ಟವಾಗುವ ಸಾಧ್ಯತೆ ಇರುತ್ತದೆ.
ಉದಾಹರಣೆ:
# ಫೈಲ್ ತೆರೆಯುವುದು
f = open('example.txt', 'w', encoding='utf-8')
# ಡೇಟಾ ಬರೆಯುವುದು
f.write('ಇದು ಒಂದು ಪರೀಕ್ಷಾ ಸಾಲು.')
# ಫೈಲ್ ಮುಚ್ಚುವುದು (ಇದು ಡೇಟಾವನ್ನು ಸೇವ್ ಮಾಡುತ್ತದೆ)
f.close()
with ಸ್ಟೇಟ್ಮೆಂಟ್: ಸ್ವಯಂಚಾಲಿತ close()
close() ಅನ್ನು ಹಸ್ತಚಾಲಿತವಾಗಿ ಕರೆಯುವುದನ್ನು ಮರೆಯುವ ಸಾಧ್ಯತೆ ಇರುವುದರಿಂದ, with ಸ್ಟೇಟ್ಮೆಂಟ್ ಅನ್ನು ಬಳಸುವುದು ಅತ್ಯುತ್ತಮ ಮತ್ತು ಸುರಕ್ಷಿತ ವಿಧಾನವಾಗಿದೆ. with ಬ್ಲಾಕ್ನಿಂದ ಹೊರಬಂದ ತಕ್ಷಣ, ಫೈಲ್ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮುಚ್ಚಲ್ಪಡುತ್ತದೆ.
with open('example.txt', 'r', encoding='utf-8') as f:
content = f.read()
print(content)
# ಈ ಸಾಲಿಗೆ ಬಂದಾಗ, 'f' ಫೈಲ್ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಮುಚ್ಚಿರುತ್ತದೆ.
close() ಅನ್ನು ಕರೆಯುವ ಅಗತ್ಯವಿಲ್ಲ, ಮತ್ತು ಇದು ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು ಹೆಚ್ಚು ಸ್ವಚ್ಛ ಮತ್ತು ದೋಷ-ಮುಕ್ತವಾಗಿಸುತ್ತದೆ.