不会编程的小卜
人生没有白走的路,每一步都算数

常用的模块

os模块:

  • os模块是和操作系统交互的模块

和文件相关的操作:

  • os.remove  删除一个文件
  • os.rename("old_name","new_name")   重命名文件/目录
  • os.mkdir("dirname")  生成单级目录,相当于shell 中的mkdir dirname
  • os.rmdir("dirname")    删除单级目录,若目录不为空则无法删除,报错;相当于shell 中 rmdir  敌人那么
  • os.stat("path/filename")   获取文件/目录信息
  • os.listdir("dirname")  列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表的方式打印
  • os.listdir("dirname")  列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表的方式打印
  • os.removedirs("dirname1")   若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依次类推

os.path系列:

  • os.path.abspath(path)  返回path规范化的绝对路径
  • os.path.split(path)  将path分割成目录和文件名二元组返回
  • os.path.dirname(path) 返回path的目录,其实就是os.path.split(path) 的第一个元素
  • os.path.basename(path)  返回path最后的文件名,如果path以/或\结尾,那么就会返回空值.即os.path.split(path) 的第二个元素
  • os.path.exists(path)  如果path存在,返回True ;如果path不存在,返回False
  • os.path.isabs(path)  如果path是绝对路径,返回True
  • os.path.isfile(path)  如果path是一个存在的文件就返回True,反之就是False
  • os.path.isdir(path)  如果path是一个存在的目录,就返回True;反之.返回False
  • os.path.join(path1[,path2,])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
  • os.path.getatime(path)  返回path所指向的文件或者目录的最后访问时间
  • os.path.getmtime(path)  返回path所指向的文件或者目录的最后修改时间
  • os.path.getsize(path) 返回path的大小

re模块:

  • re.findall()     返回所有满足匹配条件的结果,放在列表里
  • re.search()    函数会在字符串内查找模式匹配,只找到第一个匹配然后返回一个包含匹配信息的对象,该对象可以通过用group()方法得到匹配的字符串,如果字符串没有匹配,则返回None
  • re.math()  同search ,不过math是在字符串开始进行匹配
  • re.split()   用谁分割谁就是空
  • re.sub   替换 
  • re.subn()   返回的是一个元祖(替换的结果,替换了多少次)
  • re.compile()   将正则表达式编译成为一个正则表达式对象
  • re.finditer()   返回一个存放匹配结果的迭代器

正则表达式:

元字符 匹配内容
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线
\s 匹配任意的空白符字符
\d 匹配数字
\n 匹配一个换行符
\t 匹配一个制表符
\b 匹配一个单词的结尾
^ 匹配字符串的开始
$ 匹配字符串的结尾
\W 匹配非字母或数字或下划线
\D 匹配非数字
\S 匹配非空白符字符
a|b 匹配字符a或字符b
() 匹配括号内的表达式,也表示一个组
[....] 匹配字符组中的字符
[^....] 匹配除了字符组中字符的所有字符

 

 

 

 

 

 

 

 

 

 

 

 

 

量词:

量词 用法说明
* 重复0次或者多次
+ 重复一次或则多次
? 重复0次或者多次
{n} 重复n次
{n,} 至少重复n次
{n,m} 重复n次到m次

 

 

 

 

 

 

 

 

 

时间模块:

  • 时间戳时间(time.time())
  • 结构化时间
  • 格式化时间(字符串时间)  ----time.strftime('%Y/%m/%d %H:%M:%S')   time.localtime() 当地时间

三种时间的转换:  

random模块:

  • 取随机小数:

    • random.random() 默认是0--1,不用写参数
    • random.uniform(n,m)  括号里面写入参数
  • 取随机整数:

    • random.randint(n,m)   闭区间

    • random.randrange(n,m)   包括n,包括m

    • random.randrange(n,m,z)   z ----->表示的是步长   

  • 随机抽取:

    • random.choice()  一个一个抽取
    • random.smaple()  可以指定数量抽取  
  •  打乱顺序:

    • random.shuffle()

 loggind模块(日志模块):

  • 基础配置方式,只能完成一些简单的需求

    •  却点: 不支持同时向文件个屏幕输出,操作系统的编码可能会出现乱码的问题
      import logging
      logging.basicConfig(level=logging.DEBUG)
      logging.debug('debug message')    # 最细节的  计算机计算的那些小过程
       logging.info('info message')      # 普通信息  记录每个用户的操作
      logging.warning('warning message')# 警告信息  你觉得可能会影响到你程序的安全\正确率的内容
      logging.error('error message')    # 错误信息  直接影响你程序的健康了
      logging.critical('critical message') # 批判的 把整个userinfo文件删掉了
      基础配置方式
  • 对象方式,灵活性高,可扩展性大

    • 高可配置  
      import logging
      # logger对象的方式  : 灵活性 可扩展性
      logger = logging.getLogger()  # 创建一个logger对象
      logger.setLevel(logging.DEBUG)
      # 创建一个文件操作符 来准备操作日志向文件中写这件事
      fh = logging.FileHandler('mylog.log',encoding='utf-8')
      fh2 = logging.FileHandler('mylog2.log',encoding='utf-8')
      # 创建一个屏幕操作符 来准备操作日志向屏幕中写这件事
      sh = logging.StreamHandler()
      # 创建一个输出格式
      formatter = logging.Formatter('%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')
      formatter2 = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
      
      # 组合
      # 输出格式和文件操作符\屏幕操作符绑在一起
      fh.setFormatter(formatter)
      sh.setFormatter(formatter2)
      sh.setLevel(logging.ERROR)
      # logger对象分别和文件操作符\屏幕操作符绑在一起
      logger.addHandler(fh)
      logger.addHandler(fh2)
      logger.addHandler(sh)
      
      # 才开始能够使用logger来记录日志
      logger.debug('debug message')
      logger.info('info message')
      logger.warning('warning message')
      logger.error('error message')
      logger.critical('critical message')
      对象方式

 hashlib模块(摘要模块):

  • 有多种算法的模块,每一个算法都可以帮助我们完成一件事,给一个字符串惊醒计算得到一串密文结果
  • 对于不同的字符串,用一个算法加密,计算的结果总是相同的
  • 想要保证安全性可以进行动态加盐

模块的导入:

  • import....
  • from ...import....

 

posted @ 2018-12-02 17:13  不会编程的小卜  阅读(224)  评论(1编辑  收藏  举报