python學習雜記--print資訊寫入檔案
阿新 • • 發佈:2020-09-23
除了使用日誌生成函式logger,還可以直接將print的資訊寫入到目標檔案中
logger方法如下:
1 def log(message): 2 # 建立info級別的記錄器 3 logger = logging.getLogger(__name__) 4 if not logger.handlers: 5 logger.setLevel(logging.INFO) 6 # 建立日誌處理程式,並將log命名為log.txt,logging.info表示log中列印資訊的級別為info(只有級別高於info才會寫進文件。) 7filename = time.strftime("%Y-%m-%d-%H_%M_%S", time.localtime(time.time())) + r"_appium_log.txt" 8 handler_info = logging.FileHandler('..\logs\\'+filename, 'w',encoding="utf-8") 9 handler_info.setLevel(logging.DEBUG) 10 # # console中輸出日誌資訊(console輸出和上方兩行的log.txt只能選一種輸出方式,不可以共存)11 # handler_info = logging.StreamHandler() 12 # handler_info.setLevel(logging.INFO) 13 14 # 日誌格式 15 # formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') 16 # handler_info.setFormatter(formatter) 17 18 # 將日誌處理程式加入到記錄器19 logger.addHandler(handler_info) 20 logger.info(message) 21 # logger.handlers.clear() 22 return logger
print方法如下:
1 # 首先確定要寫入的檔案位置 2 File_address = r'xxxx/xxx/xxx/xx.txt' 3 f = open(File_address,'a') 4 5 print("This is for test", file=f)(或者還有一種方法是f.write(內容),用write方法需要在寫完之後加上f.close())
python關於檔案的讀取許可權:
‘r’:只讀。該檔案必須已存在。
‘r+’:可讀可寫。該檔案必須已存在,寫為追加在檔案內容末尾。
‘rb’:表示以二進位制方式讀取檔案。該檔案必須已存在。
‘w’:只寫。開啟即預設建立一個新檔案,如果檔案已存在,則覆蓋寫(即檔案內原始資料會被新寫入的資料清空覆蓋)。
‘w+’:寫讀。開啟建立新檔案並寫入資料,如果檔案已存在,則覆蓋寫。
‘wb’:表示以二進位制寫方式開啟,只能寫檔案, 如果檔案不存在,建立該檔案;如果檔案已存在,則覆蓋寫。
‘a’:追加寫。若開啟的是已有檔案則直接對已有檔案操作,若開啟檔案不存在則建立新檔案,只能執行寫(追加在後面),不能讀。
‘a+’:追加讀寫。開啟檔案方式與寫入方式和'a'一樣,但是可以讀。需注意的是你若剛用‘a+’開啟一個檔案,一般不能直接讀取,因為此時游標已經是檔案末尾,除非你把游標移動到初始位置或任意非末尾的位置。(可使用seek()方法解決這個問題)
1 print(f.readline()) # 列印一行 2 print(f.readline(5)) # 列印前5個字元 3 print(f.tell()) # 列印當前指標位置 4 print(f.read()) # 讀完檔案後,指標在最尾處 5 f.seek(0) # 如要重頭到尾再讀,檔案指標須先回到檔案頭(0-檔案頭,預設值; 1-當前位置; 2-檔案尾) 6 print(f.read()) # 重讀檔案 7 print(f.encoding) # 列印當前使用的字元編碼 8 print(f.name) # 列印檔名 9 print(f.flush()) # 重新整理 10 f.truncate() # 清空檔案 11 f.truncate(12) # 從頭開始,第12個字元後截斷並清除 12 f.close() # 關閉檔案
開啟檔案時有時還需要注意加上以哪種編碼方式開啟
常用的有“GBK”,“utf-8”,“iso-8859”
Windows預設作業系統字元編碼是GBK
Python預設操作的字元編碼是“utf-8”,也可用“iso-8859”