博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
内置模块:shutil模块,shelve模块,ConfigParser模块,hashlib模块
阅读量:4572 次
发布时间:2019-06-08

本文共 2508 字,大约阅读时间需要 8 分钟。

shutil模块:
 高级的文件,文件夹,压缩包处理模块:
 
 1. shutil.copyfileobj(fsrc, fdst[,length])
  将文件内容拷贝到另一个文件中,可以部分内容
 
 
 2. shutil.copyfile(src, dst)
  将文件内容拷贝到另一个文件中,可以部分内容
  
 3. shutil.copymode(src, dst)
  仅拷贝权限,内容,组,用户均不变
  
  
 4. shutil.copystat(stc, dst)
  拷贝状态信息,包括:mode bit,atime.mtime,flag
  
 5. shutil.copy(stc,dst)
  拷贝文件和权限
  
 6. shutil.copy2(src, dst)
  拷贝文件和属性
  
  
shelve模块:
 是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式;
 
 例1:
 
 import shelve
 
 d = shelve.open("shelve.test")     #打开一个文件
 class Test(Object):
  def __init__(self, n):
  self.n =n
  
 t = Test(123)
 t2 = Test(12345)
 
 name = ["brace","kitty","lucy"]
 
 d["test"] = name
 d["t1"] = t
 d["t2"] = t2
 
 d.close()
 
 例2;
 序列化:
  import shelve
  d = shelve.open("shelve.test")
  name = ["brace", "kitty", "lucy"]
  d["name"] = name
  
  执行后会产生3个文件:
  shelve.test.bak
  shelve.test.date
  shelve.test.dir
  
  可以不用理会
  
 反序列化: 
  x = d.get("name")
  print(x)
 
  ['brace', 'kitty', 'lucy']
 
 
ConfigParser模块:
 
 生成conf文件:
  import configparser
  
  config = configparser.ConfigParser()
  
  config["DEFAULT"] = {'ServerAliveInterval': '45',
       'Compression': 'yes',
       'CompressionLevel': '9'}
  
  config['bitbucket.org'] = {}
  config['bitbucket.org']['User'] = 'hg'
  
  config['topsecret.server.com'] = {}
  config['topsecret.server.com']['Host Port'] = '50022'  # mutates the parser
  config['topsecret.server.com']['ForwardX11'] = 'no'  # same here
  
  config['DEFAULT']['ForwardX11'] = 'yes'
  
  
  with open('test.conf', 'w') as configfile:
   config.write(configfile)
   
 
 读取conf文件:
 
 import configparser
 
 conf = configparser.ConfigParser()
 
 conf.read("test.conf")
 print(conf.defaults())
 print(conf.sections())
 print(conf["topsecret.server.com"]['Port'])
 
 输出:
 OrderedDict([('serveraliveinterval', '45'), ('compression', 'yes'), ('compressionlevel', '9'), ('forwardx11', 'yes')])
 ['bitbucket.org', 'topsecret.server.com']
 50022
 
 
hashlib模块:
 用于加密相关的操作,3.x中代替了md5模块和sha模块,主要提供sha224,sha256,sha384,sha512,md5算法;
 
 import hashlib
 m = hashlib.md5()
 m.update(b"this is brace!")
 print(m.hexdigest())
 m.update(b"It is me ")
 print(m.hexdigest())      #十六进制的
 m.update(b"Hello it is me ")
 print(m.hexdigest())
 输出:
 0a4de653ba7a58a3d33311fac5863eb2   #b"this is brace!"
 6bdd392fd9ff3457166823ba2fbe4f8b   #b"this is brace!" + b"It is me "
 bfdc7779e0e7ab776078fb52ba75d6ec   #b"this is brace!" + b"It is me " + b"Hello it is me "
 
 
 n = hashlib.md5()
 n.update(b"this is brace!It is me Hello it is me ")
 print(n.hexdigest())
 输出:
 bfdc7779e0e7ab776078fb52ba75d6ec
 
 
 
 hmac速度快:
 import hmac
 h = hmac.new(b"key:ssss", "value:ssssss你好".encode(encoding = "utf-8"))
 print(h.digest())
 print(h.hexdigest())

转载于:https://www.cnblogs.com/brace2011/p/9226373.html

你可能感兴趣的文章
Unity 3D 我来了
查看>>
setup elk with docker-compose
查看>>
C++ GUI Qt4学习笔记03
查看>>
Java基础回顾 —反射机制
查看>>
c# 前台js 调用后台代码
查看>>
2017-02-20 可编辑div中如何在光标位置添加内容
查看>>
$.ajax()方法详解
查看>>
jquery操作select(增加,删除,清空)
查看>>
Sublimetext3安装Emmet插件步骤
查看>>
MySQL配置参数
查看>>
全面理解Java内存模型
查看>>
存储过程
查看>>
生成器
查看>>
将一个数的每一位都取出来的方法!
查看>>
2) 十分钟学会android--建立第一个APP,执行Android程序
查看>>
面试题8:二叉树下的一个节点
查看>>
hash冲突的解决方法
查看>>
Asp.Net webconfig中使用configSections的用法
查看>>
mysql 二进制日志
查看>>
阻止putty变成inactive
查看>>