কয়েকটি উদাহরণ হ'ল : ফাইল ব্যবহার করে ফাইল with open(filename) as fp:
খুলুন, লক ব্যবহার করে with lock:
(যেখানে এর lock
উদাহরণ রয়েছে threading.Lock
) অর্জন করা। এছাড়াও আপনি ব্যবহার করে আপনার নিজস্ব প্রসঙ্গের পরিচালকদের গঠন করা যেতে পারে contextmanager
থেকে প্রসাধক contextlib
। উদাহরণস্বরূপ, আমি প্রায়শই এটি ব্যবহার করি যখন আমাকে বর্তমান ডিরেক্টরিটি অস্থায়ীভাবে পরিবর্তন করতে হবে এবং তারপরে আমি যেখানে ছিলাম সেখানে ফিরে আসতে হবে:
from contextlib import contextmanager
import os
@contextmanager
def working_directory(path):
current_dir = os.getcwd()
os.chdir(path)
try:
yield
finally:
os.chdir(current_dir)
with working_directory("data/stuff"):
# do something within data/stuff
# here I am back again in the original working directory
এখানে আরেকটি উদাহরণ সাময়িকভাবে পুননির্দেশনা এর sys.stdin
, sys.stdout
এবং sys.stderr
অন্য কোনো ফাইল হ্যান্ডেল এবং তাদের পুনরুদ্ধার পরে:
from contextlib import contextmanager
import sys
@contextmanager
def redirected(**kwds):
stream_names = ["stdin", "stdout", "stderr"]
old_streams = {}
try:
for sname in stream_names:
stream = kwds.get(sname, None)
if stream is not None and stream != getattr(sys, sname):
old_streams[sname] = getattr(sys, sname)
setattr(sys, sname, stream)
yield
finally:
for sname, stream in old_streams.iteritems():
setattr(sys, sname, stream)
with redirected(stdout=open("/tmp/log.txt", "w")):
# these print statements will go to /tmp/log.txt
print "Test entry 1"
print "Test entry 2"
# back to the normal stdout
print "Back to normal stdout again"
এবং পরিশেষে, অন্য একটি উদাহরণ যা একটি অস্থায়ী ফোল্ডার তৈরি করে এবং প্রসঙ্গটি রেখে যাওয়ার সময় এটি পরিষ্কার করে:
from tempfile import mkdtemp
from shutil import rmtree
@contextmanager
def temporary_dir(*args, **kwds):
name = mkdtemp(*args, **kwds)
try:
yield name
finally:
shutil.rmtree(name)
with temporary_dir() as dirname:
# do whatever you want
with
পাইথন 3 ডকুমেন্টেশন রয়েছে।