from contextlib import contextmanager
class OpenFile(object):
def __init__(self, file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True):
self.file = file
self.mode = mode
def __enter__(self):
print("OpenFileA上文方法")
self.fd = open(self.file, self.mode)
return self.fd
def __exit__(self, exc_type, exc_val, exc_tb):
print("OpenFileA下文方法")
self.fd.close()
@contextmanager
def open_file(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True):
print("open_file上文方法")
fd = open(file, mode)
yield fd
print("open_file下文方法")
fd.close()
with OpenFile("test.py", "r") as fd:
print(fd.read())
with open_file("test.py", "r") as fd:
print(fd.read())