Beberapa contoh adalah: membuka file menggunakan with open(filename) as fp:, memperoleh kunci menggunakan with lock:(di mana lockmerupakan instance dari threading.Lock). Anda juga dapat membuat manajer konteks sendiri menggunakan contextmanagerdekorator contextlib. Misalnya, saya sering menggunakan ini ketika saya harus mengubah direktori saat ini sementara dan kemudian kembali ke tempat saya sebelumnya:
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
Berikut adalah contoh lain yang sementara dialihkan sys.stdin, sys.stdoutdan sys.stderrke beberapa file lain menangani dan mengembalikannya nanti:
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"
Dan akhirnya, contoh lain yang membuat folder sementara dan membersihkannya ketika meninggalkan konteks:
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
withdokumentasi Python 3.