@@ -318,7 +318,76 @@ import time
318
318
#
319
319
# hello()
320
320
```
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
+
321
375
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
+ ```
322
391
# Typing modul
323
392
324
393
## Asosiy turlar
0 commit comments