os库操作目录及文件和logging库记录日志信息

os库操作目录及文件

使用os.sep获取系统分隔符

import os
print(os.sep)

\

使用os.name获取操作系统的平台类型

import os
print(os.name)

nt:windows   posix:linux

使用os.getcwd获取当前工作目录

import os
print(os.getcwd())

D:\CodePath\test_os

使用os.listdir查询目录下文件列表

import os
# 获取当前路径下文件和目录列表
print(os.listdir())
# 获取指定盘下的文件和目录列表
print(os.listdir("D:\\"))

['test_os_getcwd.py', 'test_os_listdir.py', 'test_os_name.py', 'test_os_sep.py', '__init__.py']
['$RECYCLE.BIN', '.temp', 'CodePath']

使用os.mkdir创建目录文件夹

import os
# 在当前路径下创建文件夹
os.mkdir("testcase")
# 在指定目录创建
os.mkdir("D:\\testcase")

使用os.rmdir删除空文件夹

import os
# 删除当前路径下空文件夹
os.rmdir("testcase")
# 删除指定目录空文件夹
os.rmdir("D:\\testcase")

使用os.remove删除指定文件

import os
# 删除当前路径下文件
os.remove("666.txt")
# 删除指定目录下文件
os.remove("D:\\CodePath\555.txt")

使用os.rename从命名文件或文件夹

import os
print(os.rename("666.txt", "66601.txt"))

使用__file__获取当前文件全部路径

print(__file__)

D:\CodePath\test_os\test_os_file.py

使用os.path.dirname返回文件所在目录

import os
# 返回文件所在目录不包括文件本身
path1 = os.path.dirname(__file__)
print(path1)

D:\CodePath\test_os

使用os.path.abspath返回文件绝对路径

import os
# 返回文件的完整路径
path2 = os.path.abspath(__file__)
print(path2)

D:\CodePath\test_os\test_os_path_abspath.py

组合使用os.path.dirname和os.path.abspath

import os
# 组合使用,返回文件所在目录
path3 = os.path.dirname(os.path.abspath(__file__))
print(path3)

D:\CodePath\test_os

使用os.path.join路径拼接

import os
# 输出文件绝对路径
path4 = os.path.join(os.path.dirname(__file__), '666.txt')
print(path4)
# dirname和abspath 输出文件绝对路径
path5 = os.path.join(os.path.dirname(os.path.abspath(__file__)), '666.txt')
print(path5)

使用os.path.exists判断路径是否存在

import os
# 返回文件的完整路径
conf_file = os.path.abspath(__file__)
# 返回文件所在目录
conf_path = os.path.dirname(conf_file)
# 通过join来拼接文件的完整路径
conf_file1 = os.path.join(conf_path, "6666.txt")
# 返回文件所在补录的上一级目录
conf_path1 = os.path.dirname(os.path.dirname(conf_path))
# sep方式来连接文件所在的完整路径
conf_file2 = conf_file1 + os.sep + "嗯嗯" + os.sep + "666.txt"

# 判断文件是否存在
res_file = os.path.exists(conf_file)
print(res_file)
# 判断目录是否存在
res_dir = os.path.exists(conf_path)
print(res_dir)
# 判断是否为文件
is_file = os.path.isfile(conf_file1)
print(is_file)
# 判断是否为目录
is_dir = os.path.isdir(conf_path1)
print(is_dir)

logging库记录日志信息

日志等级

日志等级描述
debug最详细的描述
info详细程度仅次于debug
warning不期望的事情发生时记录的信息
error报错使用
critical特别严重的问题,很少使用

使用basicConfig对日志的输出格式和方法进行配置

import logging
"""
通过basicConfig控制日志输出
level参数用来设置日志输出级别,日志级别为INFO
低于INFO不会打印,而format参数用来设置日志输出格式
"""
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s'
)
if __name__ == '__main__':
    logging.debug('----调试信息[debug]----')
    logging.info('----有用的信息[info]----')
    logging.warning('----警告信息[warning]----')
    logging.error('----错误信息[error]----')
    logging.critical('----严重错误信息[critical]----')

使用addHandler将日志输出到控制台

import logging
logger = logging.getLogger('test_logger')
# 设置日志等级开关
logger.setLevel(logging.DEBUG)
# 创建控制台实例
sh = logging.StreamHandler()
# 设置控制台日志级别
sh.setLevel(logging.DEBUG)
# 设置控制台日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
sh.setFormatter(formatter)
# 加载控制台实例到logger中
logger.addHandler(sh)
if __name__ == '__main__':
   logging.debug('-----调试信息[debug]-----')
   logging.info('-----有用信息[info]-----')
   logging.warning('-----告警信息[warning]-----')
   logging.error('-----错误信息[error]-----')
   logging.critical('-----严重错误信息[critical]-----')

将日志输出到文件

import logging
logger = logging.getLogger('test_logger')
# 设置日志输出级别
logger.setLevel(logging.DEBUG)
# 创建控制台实例
sh = logging.StreamHandler()
"""
创建文件实例
mode设置为追加;encoding防止乱码设置utf-8
"""
fh = logging.FileHandler('api.log', mode='a', encoding='utf-8')
# 设置控制台输出日志级别
sh.setLevel(logging.DEBUG)
# 设置向文件输出的日志级别
fh.setLevel(logging.DEBUG)
# 同统一设置输出日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# 设置向控制台输出的日志格式
sh.setFormatter(formatter)
# 设置向文件输出的日志格式
fh.setFormatter(formatter)
# 加载控制台上私立到logger中
logger.addHandler(sh)
# 加载文恶剪实例到logger中
logger.addHandler(fh)
if __name__ == '__main__':
    logger.debug('-----调试信息[debug]-----')
    logger.info('-----有用信息[info]-----')
    logger.warning('-----告警信息[warning]-----')
    logger.error('-----错误信息[error]-----')
    logger.critical('-----严重错误信息[critical]-----')

日志记录过程

import logging
# 创建对象
logger = logging.getLogger('test_logger')
# 设置日志输出级别
logger.setLevel(logging.DEBUG)
# 创建控制台实例
sh = logging.StreamHandler()
# 设置控制台输出日志级别
sh.setLevel(logging.DEBUG)
# 设置控制台输出的日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
sh.setFormatter(formatter)
# 加载控制台实例到logger中
logger.addHandler(sh)
# 异常处理
try:
    # 设置不存在的文件路径,然后打开
    open('/asd/asd/aaa/', 'rb')
    # 当文件存在时,输出信息到控制台
    logger.info('文件正常打开')
except Exception as e:
    # 当文件不存在时,输出信息到控制台
    logger.error('文件打开失败')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值