迭代器

  满足迭代器协议:

    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. Java中的深克隆和浅克隆

    为什么要克隆 首先思考一个问题, 为什么需要克隆对象? 直接new一个对象不行吗? 克隆的对象可能包含一些已经修改过的属性, 而new出来的对象的属性都还是初始化时候的值, 所以当需要一个新的对象来保 ...

  2. 使用eclipse初步学习vue.js基础==》v-for的使用 ②

    一.步骤演示 1. 新建一个jsp文件 2. 把vue.js放到Web的js目录下 3. 在jsp中引入vue.js <script src="${pageContext.reques ...

  3. 小tips:JS之break,continue和return这三个语句的用法

    break语句 break语句会使运行的程序立刻退出包含在最内层的循环或者退出一个switch语句.由于它是用来退出循环或者switch语句,所以只有当它出现在这些语句时,这种形式的break语句才是 ...

  4. 51nod1238 最小公倍数之和 V3(莫比乌斯反演)

    题意 题目链接 Sol 不想打公式了,最后就是求一个 \(\sum_{i=1}^n ig(\frac{N}{i})\) \(g(i) = \sum_{i=1}^n \phi(i) i^2\) 拉个\( ...

  5. 折半插入排序算法的C++实现

    折半插入排序思想和直接插入排序类似. 1)找到插入位置: 2)依次后移正确位置及后面的元素. 区别是查找插入位置的方法不同. 折半插入排序使用的折半查找法在一个已经有序的序列中找到查找位置. 注意,折 ...

  6. Wampserver或者帝国CMS安装后, 打开localhost显示IIS欢迎界面图片

    我们在安装集成环境Wampserver或者帝国CMS之后,有时会遇到一个问题, 打开localhost显示一张IIS欢迎界面图片,这个问题该如何解决呢,我在这里简单整理了一下解决方法 电脑win10系 ...

  7. MyBatis笔记----Mybatis3.4.2与spring4整合:增删查改

    结构图 刚之前没什么区别,多了一个applicationContext.xml 包图 由于之前出了一点错误,有些包可能多加上了 数据库图 model User.java package com.ij3 ...

  8. 大话C#之委托

    开篇先来扯下淡,上篇博客LZ在结尾说这篇博客会来说说C#中的事件.但是当LZ看完事件之后发现事件是以委托为基础来实现的,于是LZ就自作主张地在这篇博客中先来说说委托,还烦请各位看官见谅!!!另外关于委 ...

  9. hive笔记:时间格式的统一

    一.string类型,年月日部分包含的时间统一格式: 原数据格式(时间字段为string类型) 取数时间和格式的语法  2018-11-01 00:12:49.0 substr(regexp_repl ...

  10. x86服务器MCE(Machine Check Exception)问题

    MCE现象 Intel在Pentium 4.Xenon和P6系列处理器中实现了机器检查(Machinecheck)架构,提供能够检测和报告硬件(机器)的错误机制,如系统总线错误.ECC错误.奇偶校验错 ...