1. 程式人生 > >python環境管理器使用(程式介紹),檔案讀取和寫入

python環境管理器使用(程式介紹),檔案讀取和寫入



#本程式示意自定義的類作為環境管理器使用


class FileWrite:
    def __init__(self,filename):
        self.filename = filename
    def writeline(self,s):
        """此方法用於向檔案內寫入字串,同時自動新增換行"""


        self.file.write(s)
        self.file.write('\n')


    def __enter__(self):
        """此方法用於實現環境管理器"""
        self.file = open(self.filename,"w")
        return self  #返回值向用於with中的as繫結
    def __exit__(self,exec_type,exec_value,exec_tb):
        """exec_type 為異常類值,沒有異常發生時為None
           exec_value為錯誤的物件,沒有異常時為None
           exec_tb為錯誤的traceback物件"""
        self.fiel.close()
        print("檔案",self.filename,"已關閉")
        if exec_type is None:
            print("退出with時沒有發生異常")
        else:
            print("退出時,有異常,型別是",exec_type,"錯誤是",exec_value)   
        print("__exit__法被呼叫,已離開with語句")


try:
    with FileWrite("log.txt") as fw:#建立物件文件
        while True:
            s= input("請輸入第一行:")
            if s =='exit':
                break
            if s == 'error':
                raise ValueError("故意造成的值錯誤")
            fw.writeline(s)
except:
    print("有錯誤發生,已經轉為正常")
print("這是with語句之外,也是最後一條語句")