除了使用日志生成函數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才會寫進文檔。) 7 filename = 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”