迭代器

  满足迭代器协议:

    1、内部有next方法

    2、内部有iter()方法

os模块

import os
print(os.getcwd()) #C:\Users\Lowry\PycharmProjects\fullstack_s2\week4\day5
os.chdir('..') #改变当前脚本工作目录,可以写绝对路径,也可以用..表示当前目录的上级目录
print(os.curdir) #返回当前目录: ('.')
print(os.pardir) # 获取当前目录的父目录字符串名:('..')
os.makedirs('abc/ccc/ddd') #生成多级目录
os.removedirs('abc/ccc') #若目录为空,则删除目录并递规到上级目录,如果不为空,则不删除,如果最底层不为空,则报错
os.mkdir('abc/eee') #创建单个目录
os.rmdir('abc/eee') #删除单个目录,如果为空则删除,如果不为空则报错
os.remove("abc/ccc/aaa") #删除一个文件,只能是文件,目录不行,另外路径要对
print(os.listdir('c:\intel')) #括号内填写路径,如果不填写默认为当前路径,路径不区分大小写
os.rename('abc','bcd') #重使命名一个文件或目录,前提是要用cddir命令将路径切换到文件所在的目录
print(os.stat('./bcd')) #os.stat_result(st_mode=16895, st_ino=84442493013270541, st_dev=3026778051, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1518310074, st_mtime=1518310074, st_ctime=1518310002)
print(os.sep) #输出操作系统特定的路径分隔符
print(os.linesep) #输出当前操作系统使用的行终止符
print(os.pathsep) #输出用于分割文件路径的分隔符
os.system('arp -a') #在CMD中执行命令

hashlib模块

import hashlib
m = hashlib.md5()
m.update(b"alex")
print(m.hexdigest()) #534b44a19bf18d20b71ecc4eb77c572f m1 = hashlib.sha256()
m1.update("alex".encode("utf8"))
print(m1.hexdigest()) #4135aa9dc1b842a653dea846903ddb95bfb8c5a10c504a7fa16e10bc31d1fdf0

logging模块

import logging

logging.basicConfig(level=logging.DEBUG,    #DEBUG需要大写
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') #此项可写也可不写,不写默认为a,也就是追加模式 logging.debug('this is debug message')
logging.info('this is info message')
logging.warning('this is warning message')
logging.error('this is error message')
logging.critical('this is critical message')
'''
Mon, 26 Feb 2018 09:02:54 logging模块.py[line:14 DEBUG this is debug message
Mon, 26 Feb 2018 09:02:54 logging模块.py[line:15 INFO this is info message
Mon, 26 Feb 2018 09:02:54 logging模块.py[line:16 WARNING this is warning message
Mon, 26 Feb 2018 09:02:54 logging模块.py[line:17 ERROR this is error message
Mon, 26 Feb 2018 09:02:54 logging模块.py[line:18 CRITICAL this is critical message
'''

在logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可用参数有

level:设置rootlogger(后边会讲解具体概念)的日志级别

format:指定handler使用的日志显示格式。

datefmt:指定日期时间格式。

filename:用指定的文件名创建FiledHandler(后边会具体讲解handler的概念),这样日志会被存储在指定的文件中。

filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。

format参数中可能用到的格式化串:

%(name)s Logger的名字

%(levelno)s 数字形式的日志级别

%(levelname)s 文本形式的日志级别

%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有

%(filename)s 调用日志输出函数的模块的文件名

%(module)s 调用日志输出函数的模块名

%(funcName)s 调用日志输出函数的函数名

%(lineno)d 调用日志输出函数的语句所在的代码行

%(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示

%(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数

%(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒

%(thread)d 线程ID。可能没有

%(threadName)s 线程名。可能没有

%(process)d 进程ID。可能没有

%(message)s用户输出的消息

configparser模块

#这个模块是用来做创建和修改配置文件用的
import configparser
conf = configparser.ConfigParser() #后面这个括号别忘记加了 #对于section的操作(没有改这个操作)
conf.add_section("section1")
conf.remove_section("section1")
conf.sections() #对于option的操作(改只能通过字典的形式操作)
conf.set("section1","option1","value") #这个是新增一个,如果里面以前有,程序还会创建另外一个一模一样的
conf.remove_option("secion1","option1")
conf.options("section1")
conf.get("section1","option1")

re模块

正则表达式:

就基本本质而言,正则表达式是一种小型的、高度专业化的编程语言,(在python中)它内嵌在python中,并通过re模块实现

1、正则表达式是用来干嘛的?

答:是用来匹配 字符串的 (就是说正则和字典、列表、元组没半毛钱关系)

string提供的方法是完全匹配

引入正则:模糊匹配

元字符

. 通配符

^ 以...开头

$ 以...结尾

* 重复前面字符任意次(0~无穷次)

+ 匹配前面的字符1~无穷次

? 匹配前面这符(0~1次)

{m,n} 匹配前面的字符至少m次,至多n次,也可以写成{m}代表匹配m次,也可以写成{m,}代表匹配匹配前面字符m次到无穷次

字符集

[ ]:匹配指定范围内的任意单个字符,另外一个作用是取消元字符的特殊功能(除了三个字符:\  ^  - )

[1,2,a,5,p]、[a-z]、[1-9]

[^] 表示取反,[^4,5] 表示非4和非5的所有字符

ret = re.findall('a[24,38, ,yt,bo]','a24lokreabbsa eoiwa38a4')
print(ret) #['a2', 'ab', 'a ', 'a3', 'a4']
#从结果可以看出,只能匹配字符集中的一个,哪怕中间没有逗号隔开,也只能匹配其中一个,好像有没有逗号结果一样。 ret = re.findall('a[2438 ytbo]','a24lokreabbsa eoiwa38a4')
print(ret) #['a2', 'ab', 'a ', 'a3', 'a4']
#结果证明有没有逗号结果都是一样的,那要逗号有什么用?逗号在这里面也是一个普通字符,用于匹配后面的字符串。
#另外建议如果不匹配逗号的话,不要加逗号,所有字符写在一起。

\ :反斜杠

反斜杠后边跟元字符去除特殊功能

反斜杠后边跟普通字符实现特殊功能

\d  匹配任何十进制数;它相当于类[0-9]

\D 匹配任何非数字字符;它相当于类[^0-9]

\s  匹配任何空白字符;它相当于类[ \t \n \r \f \v ]

\S  匹配任何非空白字符;它相当于类[ ^\t \n \r \f \v ]

\w  匹配任何字母数字字符;它相当于类[a-zA-Z0-9]

\W  匹配任何非字母数字字符;它相当于类[^a-zA-Z0-9]

\b  匹配一个字母或数字与特殊字符之间的边界,特殊字符包括:¥#,等

ret = re.findall('\\\\','abc\de')
print(ret) #['\\']
#出现这个现象的原因是,\在python中也是转义的意思,\\\\要经过python解释器解释成\\,然后将\\传给re解释器。 m = re.search(r'\bblow','blow')
print(m) #<_sre.SRE_Match object; span=(0, 4), match='blow'>
#\b在python中也有特殊意思,所以前面不加r的时候匹配不到结果,在前面加个r就可以了,r的就是告诉python解释器,里面的是原生字符,不是元字符

findall返回的是一个列表

search返回的是一个对象,匹配出第一个满足条件的结果

ret.group()  取出匹配的值

ret = re.search('ab','sfabsdiowfabjkab')
print(ret) #<_sre.SRE_Match object; span=(2, 4), match='ab'>
ret.group()  #取匹配的值
print(ret.group()) #ab

( )

print(re.search('(as)+','adjkfasas').group())   #asas 贪婪匹配
print(re.search('(as)|3','3as').group()) # |表示或
ret = re.search('(?P<id>\d{3})/(?P<name>\w{3})','weeew34ttt123/ooo')
#?P为固定格式,没有具体意义,尖括号中字符是名称<名称>,用来给分组中匹配到的字符取名字,方便调取
print(ret.group()) #123/ooo
print(ret.group('id')) #
print(ret.group('name')) #ooo

正则表达式的方法:

1、findall( ) :所有结果都返回到一个列表里

2、search( ):返回匹配到的第一个对象,对象可以调用group()返回结果

3、match( ):只在字符串开始匹配,返回匹配到的第一个对象,对象可以调用group()返回结果

4、split( ):将字符串分隔开,和字符串的split一样的,但功能更强大

ret = re.split('[j,s]','sdjksal')   #先用第一个字符分,然后再用后面一个分
print(ret) #['', 'd', 'k', 'al'] 思考空是哪来的?

5、sub( ):替换,和字符串中的replace功能一样,但功能更强大

ret = re.sub('a..x','s..b','hfjasalexxdhf')  #前一个参数是规则,后一个为远的的内容,没有元字符的意义
print(ret) #hfjass..bxdhf
x='ab'
y='xxxx'
z = 'weabcdeidos'
print(re.sub(x,y,z)) #替换后生成一个新的值,替换的对象不做变更
print(z) #虽然做了替换,但Z并没有改变,字符串做替换也是一样,本原不变

6、compile( ):编译

obj = re.compile('\.com')   #编译一个规则并赋值给一个变量
ret = obj.findall('fhasjd.comhfajld') #用变量调用方法,后面直接加字符串
print(ret) #['.com']

Python:Day18 os模块、logging模块、正则表达式的更多相关文章

  1. python基础学习十 logging模块详细使用【转载】

    很多程序都有记录日志的需求,并且日志中包含的信息既有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,主要用于输出 ...

  2. os模块/sys模块/json/pickle模块/logging模块(day16整理)

    目录 今日内容 os模块 对文件操作 对文件夹此操作 辅助性的 了解 sys模块 json和pickle模块 json模块 pickle模块 logging模块 日志级别 添加设置 自定义配置 今日内 ...

  3. Python进阶(十一)----包,logging模块

    Python进阶(十一)----包,logging模块 一丶包的使用 什么是包: ​ 包是通过使用 .模块名的方式组织python模块名称空间的方式. 通俗来说,含有一个__init__.py文件的文 ...

  4. os模块 sys模块 json/pickle 模块 logging模块

    目录 模块 1. os模块 2. sys模块 3. json和pickle模块 4. logging模块 (1)日志配置 (2)实际开发中日志的使用 模块 1. os模块 os模块有什么用 与操作系统 ...

  5. Python中os和shutil模块实用方法集…

    Python中os和shutil模块实用方法集锦 类型:转载 时间:2014-05-13 这篇文章主要介绍了Python中os和shutil模块实用方法集锦,需要的朋友可以参考下 复制代码代码如下: ...

  6. Python中os和shutil模块实用方法集锦

    Python中os和shutil模块实用方法集锦 类型:转载 时间:2014-05-13 这篇文章主要介绍了Python中os和shutil模块实用方法集锦,需要的朋友可以参考下 复制代码代码如下: ...

  7. Python 入门之 内置模块 --logging模块

    Python 入门之 内置模块 --logging模块 1.logging -- 日志 (1)日志的作用: <1> 记录用户信息 <2> 记录个人流水 <3> 记录 ...

  8. python全栈开发-logging模块(日记专用)

    一.概述 很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,l ...

  9. Python的日志记录-logging模块的使用

    一.日志 1.1什么是日志 日志是跟踪软件运行时所发生的事件的一种方法,软件开发者在代码中调用日志函数,表明发生了特定的事件,事件由描述性消息描述,同时还包含事件的重要性,重要性也称为级别或严重性. ...

  10. python笔记-8(logging模块、re模块、栈与队列)

    一.Logging模块日志 1.logging导入 Import logging 2.知道5个日志级别的等级关系 Debug->info->warning->error->cr ...

随机推荐

  1. 08-HTML-框架标签

    <html> <head>  <title>框架标签学习</title>  <meta charset="utf-8"/> ...

  2. 李飞飞确认将离职!谷歌云AI总帅换人,卡耐基·梅隆老教授接棒

    https://mp.weixin.qq.com/s/i1uwZALu1BcOq0jAMvPdBw 看点:李飞飞正式回归斯坦福,新任谷歌云AI总帅还是个教授,不过这次是全职. 智东西9月11日凌晨消息 ...

  3. wap2app(二)-- 设置APP系统状态栏

    准备 工具:HBuilder 一.全屏设置,不显示系统状态栏 这里所说的系统状态栏就是包括了:信号.运营商.电量等信息手机屏幕最顶部信息. 全屏并非状态栏透明或变色,而是没有状态栏,也就是看不见电量. ...

  4. WPF:自定义Metro样式文件夹选择对话框FolderBrowserDialog

    1.前言 WPF并没有文件选择对话框,要用也就只有使用Winform版的控件.至今我也没有寻找到一个WPF版本的文件选择对话框. 可能是我眼浊,如果各位知道有功能比较健全的WPF版文件选择对话框.文件 ...

  5. 《React与Redux开发实例精解》读书笔记

    第五章 JSX语法 class属性改为className for属性改为htmlFor jsx中javascript表达式必须要有返回值,使用三元操作符 所有的标签必须闭合 input img等 re ...

  6. Python自定义异常及抛出异常

    """ 自定义异常 """ class MyException(Exception): # 继承异常类 def __init__(self, ...

  7. CentOS7中启动Tomcat后,8080端口不能被外部访问的解决办法。

    运行:/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

  8. 【MM系列】SAP 根据PO查找对应的打印FORM

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP 根据PO查找对应的打印FOR ...

  9. AngularJS学习之旅—AngularJS 简介(一)

    一.AngularJS 简介 1.AngularJS 是一个 JavaScript 框架. AngularJS 是一个 JavaScript 框架.它是一个以 JavaScript 编写的库.Angu ...

  10. CMM/CMMI的基本概念

    "CMM是指“能力成熟度模型”,其英文全称为Capability Maturity Model for Software,英文缩写为SW-CMM,简称CMM. 它是对于软件组织在定义.实施. ...