Skip to content

Commit 939df29

Browse files
authored
Update README.md
1 parent c33e31b commit 939df29

File tree

1 file changed

+69
-0
lines changed

1 file changed

+69
-0
lines changed

README.md

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,76 @@ import time
318318
#
319319
# hello()
320320
```
321+
# Context Mangers
322+
```python
323+
# Context Managers
324+
# with open('file.txt', 'w') as file:
325+
# file.write("Hello")
326+
#
327+
# file = open('file,txt', 'w')
328+
# file.write('All Nc')
329+
# file.close()
330+
331+
# class FileOpener:
332+
# def __init__(self, filename, mode='r'):
333+
# self.filename = filename,
334+
# self.mode = mode
335+
# self.opened_file = None
336+
#
337+
# def __enter__(self):
338+
# print("Entered")
339+
# return 1
340+
#
341+
# def __exit__(self, exc_type, exc_val, exc_tb):
342+
# print('Exited')
343+
#
344+
#
345+
# with FileOpener('file,txt', 'w') as file:
346+
# print('file', file)
347+
# print('nima_dir boldi')
348+
349+
# class FileOpener:
350+
# def __init__(self, filename, mode='r'):
351+
# self.filename = filename
352+
# self.mode = mode
353+
# self.opened_file = None
354+
#
355+
# def __enter__(self):
356+
# print("Entered")
357+
# self.opened_file = open(self.filename, self.mode)
358+
# return self.opened_file
359+
#
360+
# def __exit__(self, exc_type, exc_val, exc_tb):
361+
# print('Exited')
362+
# if self.opened_file:
363+
# self.opened_file.close()
364+
#
365+
#
366+
# with FileOpener('file.txt', 'w') as file:
367+
# print('file', file)
368+
# file.write('All Nc')
369+
# raise Exception
370+
# print('nima_dir boldi')
371+
372+
373+
from contextlib import contextmanager
374+
321375

376+
@contextmanager
377+
def file_opener(filename, mode):
378+
file = open(filename, mode)
379+
print('open file')
380+
try:
381+
yield file
382+
finally:
383+
file.close()
384+
print('closed file')
385+
386+
387+
with file_opener('files.txt', 'w') as file:
388+
print('file', file)
389+
raise Exception
390+
```
322391
# Typing modul
323392

324393
## Asosiy turlar

0 commit comments

Comments
 (0)