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)
拷贝文件和属性
高级的文件,文件夹,压缩包处理模块:
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())