From 85d893a2dbf06fecec41f08a989753d744fab33b Mon Sep 17 00:00:00 2001 From: KerbezOrazgaliyeva <160107140@stu.sdu.edu.kz> Date: Fri, 26 Oct 2018 02:11:21 +0600 Subject: [PATCH] create first context manager --- context_manager/a.txt | 5 ++ context_manager/cm.py | 78 +++++++++++++++++++++++++ context_manager/file_one/I.txt | 0 context_manager/file_one/context.txt | 0 context_manager/file_one/love.txt | 0 context_manager/file_one/manager.txt | 0 context_manager/file_two/I.txt | 0 context_manager/file_two/and.txt | 0 context_manager/file_two/beshbarmak.txt | 0 context_manager/file_two/love.txt | 0 context_manager/first.txt | 1 + context_manager/readme.txt | 3 + context_manager/second.txt | 1 + context_manager/third | 1 + context_manager/try.py | 3 + 15 files changed, 92 insertions(+) create mode 100644 context_manager/a.txt create mode 100644 context_manager/cm.py create mode 100644 context_manager/file_one/I.txt create mode 100644 context_manager/file_one/context.txt create mode 100644 context_manager/file_one/love.txt create mode 100644 context_manager/file_one/manager.txt create mode 100644 context_manager/file_two/I.txt create mode 100644 context_manager/file_two/and.txt create mode 100644 context_manager/file_two/beshbarmak.txt create mode 100644 context_manager/file_two/love.txt create mode 100644 context_manager/first.txt create mode 100644 context_manager/readme.txt create mode 100644 context_manager/second.txt create mode 100644 context_manager/third create mode 100644 context_manager/try.py diff --git a/context_manager/a.txt b/context_manager/a.txt new file mode 100644 index 0000000..fe9cccb --- /dev/null +++ b/context_manager/a.txt @@ -0,0 +1,5 @@ +a +da +adawd +cea +wda adwa diff --git a/context_manager/cm.py b/context_manager/cm.py new file mode 100644 index 0000000..937dddb --- /dev/null +++ b/context_manager/cm.py @@ -0,0 +1,78 @@ +#Here write your imports +import os +from contextlib import contextmanager + +# +def simple_open_and_write_without_context_manager(filename): + ''' + Write simple code without context manager. + Dont forget to close. + ''' + f = open(filename ,'w') + f.write('simple open and write done!') + f.close() + +def simple_open_and_write_with_context_manager(filename): + ''' + Write your first simple context manager. + Use statmant with + ''' + with open(filename, 'w') as f: + f.write('write with context manager done!') + + + + + + + +#### Using contextlib #### + + +@contextmanager +def open_file(file, mode): + f = open(file, mode) + yield f + f.close() + +def check_open_file(filename): + with open_file(filename, 'w') as f: + f.write('Lorem ipsum dolor sit amet, consectetur adipiscing elit.') + print(f.closed) + + +#### CD Example #### +def change_dir_without_context_manager(filename1, filename2): + cwd = os.getcwd() + os.chdir(filename1) + print(os.listdir()) + os.chdir(cwd) + + cwd = os.getcwd() + os.chdir(filename2) + print(os.listdir()) + os.chdir(cwd) + + + + +@contextmanager +def change_dir(filename): + try: + cwd = os.getcwd() + os.chdir(filename) + yield + finally: + os.chdir(cwd) + +def try_change_dir(filename): + with change_dir(filename): + print(os.listdir()) + + +simple_open_and_write_without_context_manager('first.txt') +simple_open_and_write_with_context_manager('second.txt') +check_open_file('third') +change_dir_without_context_manager('file_one','file_two') +try_change_dir('file_one') +try_change_dir('file_two') diff --git a/context_manager/file_one/I.txt b/context_manager/file_one/I.txt new file mode 100644 index 0000000..e69de29 diff --git a/context_manager/file_one/context.txt b/context_manager/file_one/context.txt new file mode 100644 index 0000000..e69de29 diff --git a/context_manager/file_one/love.txt b/context_manager/file_one/love.txt new file mode 100644 index 0000000..e69de29 diff --git a/context_manager/file_one/manager.txt b/context_manager/file_one/manager.txt new file mode 100644 index 0000000..e69de29 diff --git a/context_manager/file_two/I.txt b/context_manager/file_two/I.txt new file mode 100644 index 0000000..e69de29 diff --git a/context_manager/file_two/and.txt b/context_manager/file_two/and.txt new file mode 100644 index 0000000..e69de29 diff --git a/context_manager/file_two/beshbarmak.txt b/context_manager/file_two/beshbarmak.txt new file mode 100644 index 0000000..e69de29 diff --git a/context_manager/file_two/love.txt b/context_manager/file_two/love.txt new file mode 100644 index 0000000..e69de29 diff --git a/context_manager/first.txt b/context_manager/first.txt new file mode 100644 index 0000000..92251f1 --- /dev/null +++ b/context_manager/first.txt @@ -0,0 +1 @@ +simple open and write done! \ No newline at end of file diff --git a/context_manager/readme.txt b/context_manager/readme.txt new file mode 100644 index 0000000..ac73f1c --- /dev/null +++ b/context_manager/readme.txt @@ -0,0 +1,3 @@ +Context managers allow us to properly manage resources so that we can specify exactly what we want to set up and tear down when working with certain objects. +we can tell that we are using context manager becouse of the with statemant. + diff --git a/context_manager/second.txt b/context_manager/second.txt new file mode 100644 index 0000000..7820744 --- /dev/null +++ b/context_manager/second.txt @@ -0,0 +1 @@ +write with context manager done! \ No newline at end of file diff --git a/context_manager/third b/context_manager/third new file mode 100644 index 0000000..d863439 --- /dev/null +++ b/context_manager/third @@ -0,0 +1 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit. \ No newline at end of file diff --git a/context_manager/try.py b/context_manager/try.py new file mode 100644 index 0000000..cfd97ef --- /dev/null +++ b/context_manager/try.py @@ -0,0 +1,3 @@ +with open('a.txt', 'r') as infile: + for line in infile: + print('> {}'.format(line))