python 模块学习(二)
一、日志模块(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 message2、文件和屏幕同时输出
import logging logger = 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 < INFO < WARNING < ERROR < CRITICAL
logging.debug('debug message')
logging.info('info message')
logging.warning('waring message')
logging.error('error message')
logging.critical('critical message')
输出:
二、os模块
作用:对大量的文件和文件路径进行操作
import os print(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里换行符为:\n print(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': '',
'Compression': 'yes',
'CompressionLevel': ''}
# 生成的是字典的形式:DEFAULG 是键,中括号里面是键值,下同 config['bitbucket.org'] = {'User': 'hg'} config['topsecret.server.com'] = {}
topsecret = config['topsecret.server.com']
topsecret['Host Port'] = ''
topsecret['ForwardXll'] = 'no'
config['DEFAULT']['ForwardXll'] = 'yes' with open('example.ini', 'w') as configfile:
config.write(configfile)
输出:
写入的文件还可以读出来:
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']) # hg for 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,是完全清空重新写入,是覆盖,文件名与原来相同
注意:一个文件一旦命名绝对不会被修改,只能重新建立文件写入,修改并不是真正的修改,而是建立新的文件放在对象里面然后覆
盖原来的对象
python 模块学习(二)的更多相关文章
- python模块学习(二)
configparser模块 软件常见文档格式如下: [DEFAULT]ServerAliveInterval = 45Compression = yesCompressionLevel = 9For ...
- 【转】Python模块学习 - fnmatch & glob
[转]Python模块学习 - fnmatch & glob 介绍 fnmatch 和 glob 模块都是用来做字符串匹配文件名的标准库. fnmatch模块 大部分情况下使用字符串匹配查找特 ...
- 【目录】Python模块学习系列
目录:Python模块学习笔记 1.Python模块学习 - Paramiko - 主机管理 2.Python模块学习 - Fileinput - 读取文件 3.Python模块学习 - Confi ...
- Python模块学习filecmp文件比较
Python模块学习filecmp文件比较 filecmp模块用于比较文件及文件夹的内容,它是一个轻量级的工具,使用非常简单.python标准库还提供了difflib模块用于比较文件的内容.关于dif ...
- Python基础学习二
Python基础学习二 1.编码 utf-8编码:自动将英文保存为1个字符,中文3个字符.ASCll编码被囊括在内. unicode:将所有字符保存为2给字符,容纳了世界上所有的编码. 2.字符串内置 ...
- python模块学习第 0000 题
将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果: 好可爱>%<! 题目来源:https://github.com/Yixiao ...
- Python模块学习:logging 日志记录
原文出处: DarkBull 许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪.在.NET平台中,有非常著名的第三方开源日志组件log4net ...
- 解惑Python模块学习,该如何着手操作...
Python模块 晚上和朋友聊天,说到公司要求精兵计划,全员都要有编程能力.然后C.Java.Python-对于零基础入门的,当然是选择Python的人较多了.可朋友说他只是看了简单的语法,可pyth ...
- Python模块学习
6. Modules If you quit from the Python interpreter and enter it again, the definitions you have made ...
- 扩展Python模块系列(二)----一个简单的例子
本节使用一个简单的例子引出Python C/C++ API的详细使用方法.针对的是CPython的解释器. 目标:创建一个Python内建模块test,提供一个功能函数distance, 计算空间中两 ...
随机推荐
- LuoguP2055 [ZJOI2009]假期的宿舍【二分图最大匹配】By cellur925
题目传送门 这道题开始感觉不出是二分图最大匹配的qwq.但是今天学了匈牙利算法,想来做几个题qwq.做这个题的时候想了很久它哪里是二分图,脑子里是“两列,每列有很多点的那种图 qwq.” 然后看了题解 ...
- 1392:繁忙的都市(city)
[题目描述] 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造.城市C的道路是这样分布的:城市中有n个交叉路口,有些交叉路口之间有道路相连,两个交叉路口之间最多有 ...
- selenium之webdriverAPI接口详解
1. 浏览器操作 driver.maximize_window() #最大化窗口driver.execute_script('window.scrollTo(0,0);') #滚动窗口到最上面driv ...
- 学好Mac常用命令,助力iOS开发
原文出处: Jack_lin(@Jack_Lin_IOS ) 厚重·技术 序言 在iOS开发的过程中,更多地注重iOS开发的效率,熟练使用Mac终端操作的常用命令,可以让你更好的游刃于iOS繁重的开发 ...
- RAID 0、1、5、1+0总结
RAID(Redundant Array Of Independent Disk,独立磁盘冗余阵列),可以提供比普通磁盘更快的速度.更高的安全性,生产环境中服务器在安装时一般都会做RAID,RAID的 ...
- 什么是极坐标? —— 一点微小的想法 What is Polar Coordinate ? - Some Naive Thoughts about It
Can you answer these three questions? The answer seems to be trivial, since we can use our eyes to o ...
- 微信小程序 可用性一览
1. 调试vConsole微信小程序通过vConsole的形式观察控制台打印.打印到vConsole控制台的是由 JSON 转化的字符串.这还是可以起到调试作用的. Source Map当es6 转 ...
- gp服务输出的结果文件输出到绝对路径
gp服务跟本地用arcmap执行gp有个不同,就是输出的文件一般只能输出到arcgis server默认的output目录里面(arcgis server有此限制,无论怎么配还是写到output目录里 ...
- 使用 Azure ARM 部署Word Press 遇到 Extension节点 扩展的问题
在使用Azure ARM模式部署wordpress,将php网站压缩成zip的形式在DefaultTemplate模板中已扩展的形式实现安装 遇到的问题总结: 1.开始在sites节点中,resour ...
- 阿里云服务器ECS部署应用教程
购买阿里云服务器 大多数云服务器默认安装的语言运行环境版本都很旧了,python用的还是2.7,JDK用的还是1.6的,在ECS云服务器中可以自行安装,包括python3.4之类的. 在次页面购买EC ...