热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python模块学习(二)

一、日志模块(logging)日志是一种追踪软件运行时所发生事件的方法1、简单的日志编写(文件输出)importloggin

一、日志模块(logging )

日志是一种追踪软件运行时所发生事件的方法

1、简单的日志编写(文件输出)

import logging # 日志模块# 日志配置,把日志内容存到文件中
logging.basicConfig(level=logging.ERROR, # 级别修改,注意一定是大写format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',datefmt='%a, %d %b %Y %H:%M:S', # 指定时间格式filename='test.log', # 日志内容存到该文件目录下filemode='w') # 模式,每次开始都刷新重写,如果想要之前的内容就把‘w’改为‘a’# 日志级别,()里面是日志的内容,可以随意添加
logging.debug('debug message')
logging.info(
'info message')
logging.warning(
'warning message')
logging.error(
'error message')
logging.critical(
'critical message')

输出:Tue, 05 Mar 2019 16:37:S logging .py[line:16] ERROR error message
Tue, 05 Mar 2019 16:37:S logging .py[line:17] CRITICAL critical message
2、文件和屏幕同时输出

import logginglogger = logging.getLogger()# 创建一个hangler, 用于写入日志文件
fh = logging.FileHandler('test.log') # 文件输出对象# 再创建一个handler, 用于输出到控制台
ch = logging.StreamHandler() # 屏幕输出对象

formatter
= logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')fh.setFormatter(formatter) # 文件输出创建一个formatter输出流格式
ch.setFormatter(formatter)logger.addHandler(fh) # logger里面有两种输出对象,文件和屏幕
logger.addHandler(ch)logger.setLevel(logging.WARNING) # 修改输出日志的级别,从DEBUG开始,输出5行,注意全是大写

# 日志等级是从上到下依次升高的,即:DEBUG
logging.debug(
'debug message')
logging.info(
'info message')
logging.warning(
'waring message')
logging.error(
'error message')
logging.critical(
'critical message')

输出: image

image

 

二、os模块

作用:对大量的文件和文件路径进行操作

import osprint(os.getcwd()) # 获取当前工作目录

os.chdir(r
'F:\My test\fullstack\week2') # 改变当前工作目录,加r表示原生字符串,不进行任何转义print(os.curdir) # 获取当前目录:‘.’ 用一个‘.’ 表示
print(os.pardir) # 获取当前目录的父级目录字符串名:‘..’
os.makedirs('abc') # 创建文件夹,默认创建在当前目录下,如果文件已存在,报错

os.makedirs(
'abc\\long') # 创建多层目录,用 \\ 隔开
os.mkdir('abc') # 只能生成一个文件
os.mkdir('abc\\long') # 在已经有abc 文件的基础上,再生成一个文件loing

os.removedirs(
'abc\\long') # 删除文件夹(只能删除空文件)先判断long中有没有文件,没有就删除,一层层往外找
os.rmdir('abc') # 删除单级空目录,若目录不为空无法删除

dirs
= os.listdir(r'F:\My test\fullstack\week2') # 打印绝对目录里面的所有文件
print(dirs)os.remove('abc\\dff') # 删除dff文件,只能删除文件不能删除文件夹,
os.rename('abc', 'www') # 修改文件(夹)名, abc改为www

info
= os.stat('.\\www') # 获取文件的详细信息
print(info)
print(info.st_size) # 获取文件大小print(os.sep) # \ 获取当前系统的路径分割符
q = os.sep # 用q替换分隔符, q是一个变量# windows里换行符为: \r\n linux里换行符为:\nprint(os.pathsep) # 输出用于路径分割文件路径的字符print(os.name) # 输出字符串当前使用平台 win->'nt'
print(os.system("dir")) # 显示当前目录的内容
print(os.environ) # 获取系统环境变量
print(os.path.abspath('./www')) # 获取文件www的绝对路径

s
= os.path.split(r'F:\My test\fullstack\week2\day3\www')
print(s) # 把文件路径和文件名分隔开

s
= os.path.dirname('F:\\My test\\fullstack\\week2\\day3')
print(s) # 返回当前文件上一级的文件夹路径

s
= os.path.basename('F:\\My test\\fullstack\\week2\\day3')
print(s) # day3 返回文件名,就是 os.path.split(path) 的第二个内容

s
= os.path.exists('F:\\My test\\fullstack\\week2\\day3')
print(s) # path存在返回True,不存在返回False

s
= os.path.isabs('F:\\My test\\fullstack\\week2\\day3')
print(s) # 如果path是绝对路径返回True,否则返回False

s
= os.path.isfile('F:\\My test\\fullstack\\week2\\day3')
print(s) # 如果path是一个存在的文件返回True,否则返回False

s
= os.path.isdir('F:\\My test\\fullstack\\week2\\day3')
print(s) # 如果path是一个存在的目录返回True,否则返回False

s
= os.path.join('F:\\My test\\fullstack\\week2\\day3', 'F:\\My test\\fullstack\\week2\\day4')
print(s) # 路径拼接: F:\My test\fullstack\week2\day4

s
= os.path.getatime('F:\\My test\\fullstack\\week2\\day3')
print(s) # 返回path所指向文件或目录的最后存取时间

s
= os.path.getmtime('F:\\My test\\fullstack\\week2\\day3')
print(s) # 返回path所指向文件或目录的最后修改时间

三、configparser 模块

作用:用于生成和修改常见的配置文件,通过字典录入

import configparser # 所有操作都围绕config对象进行
config = configparser.ConfigParser()# 写入文件
config["DEFAULT"] = {'ServerAliveInterval': '45','Compression': 'yes','CompressionLevel': '9'}
# 生成的是字典的形式:DEFAULG 是键,中括号里面是键值,下同

config[
'bitbucket.org'] = {'User': 'hg'}config['topsecret.server.com'] = {}
topsecret
= config['topsecret.server.com']
topsecret[
'Host Port'] = '50022'
topsecret[
'ForwardXll'] = 'no'
config[
'DEFAULT']['ForwardXll'] = 'yes'with open('example.ini', 'w') as configfile:config.write(configfile)

输出:

image

写入的文件还可以读出来:

import configparser config = configparser.ConfigParser() # 所有操作都围绕config对象进行

config.read(
'example.ini') # 读配置文件操作
print(config.sections()) # 不能读取默认块儿的内容:['bitbucket.org', 'topsecret.server.com']
print(config.defaults()) # 读取默认块儿DEFAULT里面的信息
print(config['bitbucket.org']['User']) # hgfor key in config:print(key) # 打印所有块儿的名字for key in config['bitbucket.org']:print(key) # DEFAULT 是特殊的,打印别的块下的内容它也跟在下面

配置文件的增删改:

config.remove_section('topsecret.server.com') # 删除块:topsecret.server.com
config.write(open('i.cfg', 'w')) # 无论如何修改都要加这句,下同
print(config.has_section('topsecret.server.com')) # 判断有没有该字符串:False (因为前面删除了)

config.set(
'bitbucket.org', 'user', 'xiaoss') # 修改操作:('块', '键', '要修改的值')
config.remove_option('DEFAULT', 'forwardxll') # 删除块下的某个键值对儿:('块', '键值')

config.write(open(
'example.ini', 'w')) # 注意对文件example.ini,是完全清空重新写入,是覆盖,文件名与原来相同

注意:一个文件一旦命名绝对不会被修改,只能重新建立文件写入,修改并不是真正的修改,而是建立新的文件放在对象里面然后覆
盖原来的对象

转:https://www.cnblogs.com/ss-long/p/10478327.html



推荐阅读
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 本文介绍了在MFC下利用C++和MFC的特性动态创建窗口的方法,包括继承现有的MFC类并加以改造、插入工具栏和状态栏对象的声明等。同时还提到了窗口销毁的处理方法。本文详细介绍了实现方法并给出了相关注意事项。 ... [详细]
  • 本文整理了Java中java.lang.NoSuchMethodError.getMessage()方法的一些代码示例,展示了NoSuchMethodErr ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文介绍了在Cpp中将字符串形式的数值转换为int或float等数值类型的方法,主要使用了strtol、strtod和strtoul函数。这些函数可以将以null结尾的字符串转换为long int、double或unsigned long类型的数值,且支持任意进制的字符串转换。相比之下,atoi函数只能转换十进制数值且没有错误返回。 ... [详细]
  • 本文讨论了如何使用GStreamer来删除H264格式视频文件中的中间部分,而不需要进行重编码。作者提出了使用gst_element_seek(...)函数来实现这个目标的思路,并提到遇到了一个解决不了的BUG。文章还列举了8个解决方案,希望能够得到更好的思路。 ... [详细]
  • 本文介绍了解决java开源项目apache commons email简单使用报错的方法,包括使用正确的JAR包和正确的代码配置,以及相关参数的设置。详细介绍了如何使用apache commons email发送邮件。 ... [详细]
author-avatar
Mikor
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有