除了使用日志生成函数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”