random

random模块是随机数模块,用来获取随机数

import random
print(random.random())#随机获取0-1之间的小数
print(random.uniform(1,2))#随机获取指定区间的小数
print(random.randint(1,10))#随机生成指定区间的整数[1-3]
print(random.randrange(0,11,2))#随机获取指定区间的整数,步长为2[0,11)
print(random.choice('abdcdda'))#随机获取字符串中的一个字符
print(random.sample('abdcdda',3))#随机获取字符串中指定数量的字符,并转换成list形式输出
print(random.sample(['a','b','c','d','e','f','g','h','i','j'],3))

洗牌功能

>>> import random
>>> l = list(range(10))
>>> l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> random.shuffle(l)
>>> l
[3, 8, 0, 9, 7, 4, 5, 1, 2, 6]

简单的验证码功能

方法一:

import random

items = list(map(chr,list(range(97,123))))
items.extend([str(x) for x in range(10)])
a=''
for i in random.sample(items,4):
    a += i

print(a)

方法二:

import random
def make(n):
    res=''
    for i in range(n):
        s1=chr(random.randint(65,90))
        s2=str(random.randint(0,9))
        res+=random.choice([s1,s2])
    return res

print(make(4))

 os

os模块是操作系统进行调用的接口

import os
os.getcwd() #获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname")  #改变当前脚本工作目录;相当于shell下cd
os.curdir  #返回当前目录: ('.')
os.pardir  #获取当前目录的父目录字符串名:('..')
os.makedirs('dirname1/dirname2')    #可生成多层递归目录
os.removedirs('dirname1')    #若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname')    #生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname')    #删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname')    #列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove()  #删除一个文件
os.rename("oldname","newname")  #重命名文件/目录
os.stat('path/filename')  #获取文件/目录信息
os.sep    #输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
os.linesep    #输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
os.pathsep    #输出用于分割文件路径的字符串
os.name    #输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bash command")  #运行系统命令,直接显示
os.environ  #获取系统环境变量
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所指向的文件或者目录的最后修改时间

sys

import sys
sys.argv           #命令行参数List,第一个元素是程序本身路径
sys.exit(n)        #退出程序,正常退出时exit(0)
sys.version        #获取Python解释程序的版本信息
sys.path           #返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform       #返回操作系统平台名称

shutil

高级的 文件、文件夹、压缩包 处理模块

import shutil
shutil.copyfileobj(fsrc, fdst[, length]) #将文件内容拷贝到另一个文件中,可以部分内容
shutil.copyfile(src, dst)   #拷贝文件
shutil.copymode(src, dst)   #仅拷贝权限。内容、组、用户均不变
shutil.copystat(src, dst)   #拷贝状态的信息,包括:mode bits, atime, mtime, flags
shutil.copy(src, dst)       #拷贝文件和权限
shutil.copy2(src, dst)      #拷贝文件和状态信息
shutil.copytree(src, dst, symlinks=False, ignore=None)  #递归的去拷贝文件
shutil.rmtree(path[, ignore_errors[, onerror]]) #递归的去删除文件
shutil.move(src, dst)   #递归的去移动文件
shutil.make_archive(base_name, format,...)  
#创建压缩包并返回文件路径,例如:zip、tar
# base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
# 如:soft                        =>保存至当前路径
# 如:/usr/bin/www =>保存至/usr/bin/
# format:    压缩包种类,“zip”, “tar”, “bztar”,“gztar”
# root_dir:    要压缩的文件夹路径(默认当前目录)
# owner:    用户,默认当前用户
# group:    组,默认当前组
# logger:    用于记录日志,通常是logging.Logger对象

shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的,详细:

import zipfile

# 压缩
z = zipfile.ZipFile('soft.zip', 'w')
z.write('soft')
z.write('log.log')
z.close()

# 解压
z = zipfile.ZipFile('soft.zip', 'r')
z.extractall()
z.close()
import tarfile

# 压缩
tar = tarfile.open('nginx.tar','w')
tar.add('/usr/bin/nginx.zip', arcname='nginx.zip')
tar.close()

# 解压
tar = tarfile.open('nginx.tar','r')
tar.extractall()  # 可设置解压地址
tar.close()

json$pickle

用于序列化的两个模块

  • json,用于字符串 和 python数据类型间进行转换
  • pickle,用于python特有的类型 和 python的数据类型间进行转换

Json模块提供了四个功能:dumps、dump、loads、load

pickle模块提供了四个功能:dumps、dump、loads、load

import pickle
d = dict(name='Bob', age=20, score=88)
#pickle.dumps()将数据通过特殊的形式转换为只有python语言认识的字符串
print(pickle.dumps(d)) print(pickle.loads(pickle.dumps(d)))
#pickle.dump()将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件
with open('d.txt','wb') as f:
    pickle.dump(d,f)

with open('d.txt','rb') as f:
    d1=pickle.load(f)
print(d1)

import json
print(json.dumps(d))
print(json.loads(json.dumps(d)))


with open('d1.txt','w') as f:
    json.dump(d,f)
with open('d1.txt','r') as f:
    d1=json.load(f)

shelve

shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式

存入shelve

import shelve
import time
d = shelve.open('shelve_test')  # 打开一个文件
#初始化数据
l = ['a','b','c']
s = 'abc'
dict = dict(name='Bob', age=20, score=88)
date = time.time()


d['list'] = l
d['str'] = s
d['dict'] = dict
d['date'] = date
d.close()

获取shelve

import shelve
d = shelve.open('shelve_test')  # 打开一个文件

print(d.get('list'))  
print(d.get('str'))
print(d.get('dict'))
print(d.get('date'))
d.close()