zoukankan      html  css  js  c++  java
  • time,datetime,random,os,sys,hashlib,logging,configparser,re模块

    #-----time模块-----

     1 print(help(time))  #打印time帮助文档
     2 print(time.time()) #打印时间戳  1569824501.6265268
     3 time.sleep(2)
     4 print(time.perf_counter())  #计时器
     5 print(time.process_time())  #处理时间
     6 print(time.gmtime()) #结构化时间,UTC时间
     7 print(time.localtime()) #本地时间
     8 print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())) #2019-09-30 14:51:34
     9 print(time.strftime("%Y-%m-%d %X",time.localtime())) #2019-09-30 14:51:34
    10 
    11 a = time.strptime("2019-09-30 14:51:34","%Y-%m-%d %H:%M:%S")
    12 #time.struct_time(tm_year=2019, tm_mon=9, tm_mday=30, tm_hour=14, tm_min=51, tm_sec=34, tm_wday=0, tm_yday=273, tm_isdst=-1)
    13 print(a.tm_year)
    14 
    15 #时间戳表现形式:1、结构化时间  2、格式化时间
    16 
    17 print(time.ctime())
    18 print(time.mktime(time.localtime())) #转换为时间戳  1569827234.0
    #-----datetime模块-----

    print(datetime.datetime.now()) #2019-09-30 15:53:13.628849

    #-----random 随机数-----

    1 print(random.random()) #0~1之间的数
    2 print(random.randint(1,3)) #包括3
    3 print(random.choice(['剪刀','石头',''])) #取列表中的一个值
    4 print(random.choice('1''2''3''4''5'))
    5 print(random.randrange(10)) #在0~9 之间取随机数
    #-----打乱排序

    1 iters = [1,2,3,4,5,6,7,8,9]
    2 a = random.shuffle(iters)
    3 print(iters)  #[5, 8, 1, 4, 3, 7, 9, 6, 2]
    #多个字符串中选取指定数量的字符组成新字符串:

    1 print(''.join(random.sample(['a','z','d','w','r','w','y','i'],3)))
    #-----随机生成5位验证码
    1 import random
    2 
    3 def v_code():
    4     for i in range(5):
    5         code1 = random.randrange(10) #生成一个随机0-9随机数字
    6         code2 = random.choice(chr(random.randrange(65,91))) #生成一个随机大写字母
    7         code3 = random.choice(chr(random.randrange(97,123))) #生成一个随机小写字母
    8         print(random.choice([code1,code2,code3]),end="")
    9 v_code()
    View Code
    #-----os 模块-----

     1 import os
     2 
     3 #-----os模块(测试系统为linux环境)-----
     4 print(os.getcwd()) #获取当前目录
     5 print(os.getcwd())
     6 print(os.chdir(r"/")) #修改当前路径
     7 print(os.getcwd())
     8 os.makedirs('dream') #创建一个文件夹
     9 print(os.getcwd())
    10 os.remove('dream//1.py')#删除单个文件1.py
    11 os.removedirs('dream')#只能删除空文件夹,删除dream文件夹
    12 os.mkdir('wx')#生成单个目录
    13 os.mkdir('wx//qq')
    14 os.removedirs('wx//qq')#只能删除空文件夹
    15 os.rmdir('wx') #删除文件夹
    16 os.makedirs('dream//test//rise') #创建对多文件夹
    17 a = os.listdir(r'/home/rise/PycharmProjects/mode1/02部分/week4/day3')
    18 print(a) #列出指定目录下的所有文件和子目录
    19 os.remove('1.py') #只能删除文件,不能删除文件夹
    20 os.rename('1.py','test.py') #重命名文件
    21 print(os.name)#输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
    22 info = os.stat(r"day3.1.txt")  #获取文件信息
    23 print(info.st_size) #2758
    24 print(os.sep) # / #路径分割符
    25 print(os.pathsep) #环境变量风格符
    26 os.system("ls") #执行shell命令
    27 print(os.path.abspath('./day3.1.txt')) #/home绝对路径 /rise/PycharmProjects/mode1/02部分/week4/day3/day3.1.txt
    28 print(os.path.split('/rise/PycharmProjects/mode1/02部分/week4/day3/day3.1.txt'))  #路径分割,分割为路径和文件名
    29 #('/rise/PycharmProjects/mode1/02部分/week4/day3', 'day3.1.txt')
    30 print(os.path.dirname('/rise/PycharmProjects/mode1/02部分/week4/day3/day3.1.txt')) #返回绝对路径上一层
    31 print(os.environ) #显示环境变量
    32 print(os.name)#输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
    33 print(os.path.dirname(__file__))   #输出当前文件路径
    34 /home/rise/PycharmProjects/mode1/02部分/week4/day3
    #-----sys模块(与Python解释器进行交互)-----

    1 import sys
    2 
    3 print(sys.argv)
    4 print(sys.exit())
    5 print(sys.path) #搜寻模块路径的列表
    6 print(sys.version)#获取python解释器版本信息
    7 print(sys.platform) #返回操作系统平台名称
    #-----hashlib模块-----

     1 import hashlib
     2 
     3 #----md5
     4 m1 = hashlib.md5()
     5 m1.update("learn english".encode("utf-8")) #编码转换,update 处理数据类型为byte类型
     6 print(m1.hexdigest()) #51e219953881565e51a2c54c4947c3c0
     7 
     8 #----sha256
     9 hashlib.sha256
    10 m2 = hashlib.sha256()
    11 m2.update("learn english".encode("utf-8")) #编码转换,update 处理数据类型为byte类型
    12 print(m2.hexdigest()) #c980e31678b5f1ac8ee13ccebf192320a98714600c0e971555c221509e13efe0
    #-----logging模块-----

     1 import logging
     2 
     3 logging.basicConfig(level=logging.INFO,
     4                     format='%(asctime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s',
     5                     datefmt='%a,%d %m %Y %H:%M:%S',
     6 
     7                     filename='text.log',  #filename 改变输出方式
     8                     filemode='a')
     9 
    10 logging.debug('debug message1')
    11 logging.info('info message2')
    12 logging.warning('warning message3')
    13 logging.error('error message4')
    14 logging.critical('critical message5')
    View Code
    #-----logging屏幕与文件同时输出-----

     1 import logging
     2 
     3 logger = logging.getLogger()
     4 #创建一个handler,用于写入日志文件
     5 fh = logging.FileHandler('test.log')
     6 
     7 #在创建一个handler,用于输出到控制台(屏幕输出)
     8 ch = logging.StreamHandler()
     9 
    10 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    11 
    12 fh.setFormatter(formatter)
    13 ch.setFormatter(formatter)
    14 
    15 logger.addHandler(fh) #添加文件输出
    16 logger.addHandler(ch) #添加屏幕输出
    17 
    18 
    19 logger.setLevel(logging.DEBUG) #日志级别
    20 
    21 logger.debug('debug message1')
    22 logger.info('info message2')
    23 logger.warning('warning message3')
    24 logger.error('error message4')
    25 logger.critical('critical message5')
    View Code
    #-----configparser(创建配置文件)-----

     1 import configparser
     2 
     3 config = configparser.ConfigParser()
     4 config["DEFAULT"] = {
     5     "Server":45,
     6     "Compression":"yes",
     7     "ComprewssionLevel":9}
     8 config['dream'] = {
     9     "name":"dream",
    10     "age":21,
    11     "sex":"male"}
    12 config['test'] ={
    13     "ttt":"t",
    14     "aaa":"a",
    15     "bbb":'b'}
    16 with open("config.ini",'w') as configfile:
    17     config.write(configfile)
    #-----输出结果(配置文件)

     1 [DEFAULT]
     2 server = 45
     3 compression = yes
     4 comprewssionlevel = 9
     5 
     6 [dream]
     7 name = dream
     8 age = 21
     9 sex = male
    10 
    11 [test]
    12 ttt = t
    13 aaa = a
    14 bbb = b
    View Code
    #-----读取

     1 config = configparser.ConfigParser()
     2 config.read("config.ini")
     3 print(config.sections()) #除去默认的,['dream']
     4 print(config.defaults()) #生成有序的字典,打印默认中的信息。OrderedDict([('server', '45'), ('compression', 'yes'), ('comprewssionlevel', '9')])
     5 print(config.default_section) #DEFAULT
     6 print(config['DEFAULT']['server'])  #类似字典取法,45
     7 
     8 for key in config["dream"]:
     9     print(key,end=" ")
    10 #除打印需求的,同时打印DEFAULT(默认的)name age sex server compression comprewssionlevel
    #-----修改

     1 config = configparser.ConfigParser()
     2 config.read("config.ini") #读取文件
     3 config.remove_section('dream') #删除分组['dream']的配置文件
     4 config.write(open("config1.ini",'w')) #删除后另存为config1文件
     5 
     6 config.read("config1.ini") #读取文件
     7 ter1 = config.has_section('dream')
     8 print(ter1) #检查是否在,返回False
     9 
    10 config.remove_option('test','ttt') #删除分组中的部分
    11 config.write(open('config2.ini','w'))
    12 
    13 config.read('config2.ini')
    14 ter2 = config.has_option('test','ttt')
    15 print(ter2) #False
    16 
    17 config.add_section("h1")
    18 config.write(open("config4.ini",'w')) #生成分组[h1]
    19 
    20 config.read("config2.ini")
    21 config.set('test','aaa','a1') #修改['h1']['aaa'] 相关的值,将'a'改为'a1'
    22 config.write(open("config3.ini","w"))
    #-----re正则表达式:匹配字符串-----

    #正则表达式的方法:

    1、re.findall() :所有结果都返回到一个列表里
    2、re.search() :返回对象(object),对象调用group()返回结果
    3、match() :只在字符串开始匹配
    4、re.split() :分割
    5、re.sub() :替换
    6、re.compile : 共用规则,多次调用规则进行匹配

    #string(字符串)提供匹配方法是完全匹配

     1 import re
     2 
     3 #源字符 . ^ $ * + ? {} ( ) 
     4 
     5 #通配符 . (点代指任意一个字符,换行符
     ,无法匹配到)
     6 ret1 = re.findall("w..l","hello world")
     7 print(ret1)
     8 
     9 # ^  (以最开始的位置匹配)
    10 ret2 = re.findall('^a..n','adfnddfdafffn')
    11 print(ret2)
    12 
    13 # $ (以结尾的位置匹配)
    14 ret3 = re.findall('a..n$','addnadfddfkdafdn')
    15 print(ret3)
    16 
    17 # * (重复匹配)[0,+00]
    18 ret4 = re.findall('abc*','abcccccc')
    19 print(ret4)#贪婪匹配方法['abcccccc']
    20 
    21 # +(重复匹配)[1,+00]
    22 ret5 = re.findall('abc+','abcccccf')
    23 print(ret5) #['abccccc']
    24 
    25 # ? 惰性匹配[0,1]
    26 ret6 = re.findall('abc?','abccabdcccc')
    27 print(ret6)# [0,1]
    28 
    29 # {}
    30 ret7 = re.findall('a{5}b',"eaaaaaabbbcdfgd")
    31 print(ret7)
    32 ret8 = re.findall('a{1,3}b',"eaaaaaabbbcdfgd")
    33 print(ret8)
    34 
    35 # []
    36 ret9 = re.findall('a[bc]d','abdcacdabcd')
    37 print(ret9) #[bc] 之间的关系为或的关系
    38 
    39 ret10 = re.findall('abc*?','abcdffgabccgh')
    40 print(ret10) # ? 惰性匹配
    41 
    42 #[^a-z] 取反
    43 ret = re.findall("[^a-z]","123435fsfafdfsd")
    44 print(ret) #['1', '2', '3', '4', '3', '5']
    45 
    46 #------ [] 字符集: 取消元字符的特殊功能( ^ -)
    47 
    48 ret = re.findall('a[bc,*]d','abdcacdabca*d')
    49 print(ret) #['abd', 'acd', 'a*d']
    50 
    51 ret = re.findall('[1-9,a-z,A-Z]',"12wff7ofWHfe")
    52 print(ret) #['1', '2', 'w', 'f', 'f', '7', 'o', 'f', 'W', 'H', 'f', 'e']
    53 
    54 #  (1、反斜杠后面的元字符去掉特殊功能 2、反斜杠后面跟普通字符实现特殊功能)
    55 ret = re.findall("d{11}","asda1234454676677dd")
    56 print(ret) #['12344546766']
    57 
    58 #w 匹配任何字母数字字符
    59 ret = re.findall("w","asda1237d")
    60 print(ret) #['a', 's', 'd', 'a', '1', '2', '3', '7', 'd']
    61 ret1 = re.findall("w+","i am a boy")
    62 print(ret1) #['i', 'am', 'a', 'boy']
    63 
    64 # 匹配特殊字符边界(空格或者特殊字符$)
    65 ret2 = re.findall(r"i","i am a boy,i$")
    66 print(ret2) #['i', 'i']
    67 
    68 #-----search 匹配出第一个满条件的结果
    69 ret = re.search("ab","adfdfdababdab")
    70 print(ret.group())
    71 
    72 # r"" 匹配条件加r(原生字符)
    73 a = re.findall(r"blow","blow")
    74 print(a)
    75 b = re.findall("\\","\\")
    76 b1 = re.findall(r"\","\\\")
    77 print(b,b1)
    78 
    79 # () |
    80 print(re.search("(ab)+","ababdfdf").group())
    81 print(re.search("(ab)|3","ababd3fdf").group())
    82 
    83 # ?P<id>d{3}  (分组)
    84 print(re.search("(?P<id>d{3})/(?P<name>w{3})","12324/csvcs239").group()) #324/csv
    85 
    86 print(re.match("abc","abcweabc").group()) #从字符开始匹配
    87 ret = re.split("[j,d]","sdswkdldbds") #分割
    88 print(ret) #['s', 'swk', 'l', 'b', 's']
    89 ret = re.sub("a","cv","avbadvdve")  #替换
    90 print(ret)
    91 
    92 obj = re.compile(r".com") #re.compile内添加规则
    93 ret1 = obj.findall("www.baidu.com")
    94 print(ret1)
    
    
  • 相关阅读:
    拷贝某文件至某位置
    Java对象的序列化和反序列
    常见的RuntimeException异常有哪些
    array数组增删元素
    失眠怎么办
    构造函数和函数区别(关键的new操作符)
    匿名函数递归(arguments.callee)和命名函数递归
    localeCompare方法在chrome浏览器取值问题
    random()方法
    iframe 父子页面之间取值
  • 原文地址:https://www.cnblogs.com/rise-home/p/11628319.html
Copyright © 2011-2022 走看看