一、random随机数模块
使用随机数模块需要导入随机数模块import random
1.random.random()
生成[0,1)之间的随机小数
2.random.randint(a,b)
生成[a,b]之间的随机整数
3.random.randrange(a,b[,c])
生成[a,b)之间的随机整数,要求a<b,如果有参数c则步长为c
4.random.uniform(a,b)
生成[a,b]之间的随机小数,a和b之间没有大小要求
5.random.choice(序列)
在序列中随机选取一个元素,参数为一个序列,可以为字符串、列表或元组
6.random.sample(序列,n)
在序列中随机选取n个,第一个参数为一个序列,第二个参数表示从序列中选取的个数
7.random.shuffle(l)
打乱列表的元素顺序,参数为一个列表
random.choice(序列)和random.sample(序列,n)都不修改原序列,返回随机选取出来的值
random.shuffle(l)会直接修改列表,返回值为None,如果要查看修改后的列表不能直接打印即不能print(random.shuffle(l)),而是直接打印列表
import random print(random.random()) print(random.randint(1,5)) print(random.randrange(2,26[,3])) print(random.choice([1,'hi',[1,2]])) print(random.sample([1,'hi',[1,2]],2)) print(random.uniform(5,3.6)) a=[1,'a',2,3,'b'] random.shuffle(a) print(a)
二、shutil文件操作模块
参考https://www.cnblogs.com/xiangsikai/p/7787101.html
os模块提供了对目录或者文件的新建、删除、查看文件属性,还提供了对文件以及目录的路径操作,比如说绝对路径、父目录…… 但是文件的操作还应该包含移动、复制、打包、压缩、解压等操作,这些功能os模块没有提供。而shutil模块则是对文件操作的补充,即移动、复制、打包、压缩、解压等操作,需导入模块import shutil。
1.文件操作
①只拷贝文件内容:shutil.copyfileobj(fsrc, fdst[, length]),相当于用原文件的内容覆盖目标文件的内容
f1=open('a.ini','r') f2=open('b.ini','w') shutil.copyfileobj(f1,f2)
原文件要以读的模式打开,目标文件要以写的模式打开
②拷贝文件:shutil.copyfile(src, dst),相当于创建一个空的目标文件,再把原文件内容覆盖到目标文件
shutil.copyfile('a.ini','b.ini')
copyfile不需要打开文件。
③拷贝权限:shutil.copymode(src, dst)
shutil.copymode('a.ini','b.ini')
要求目标文件存在。
④拷贝状态信息:shutil.copystat(src, dst),包括创建、访问和修改时间等
shutil.copystat('a.ini','b.ini')
⑤拷贝文件和权限:shutil.copy(src, dst),即先copyfile再copymode
shutil.copy('a.ini','b.ini')
⑥拷贝文件和状态:shutil.copy2(src, dst),即先copyfile再copystat
shutil.copy2('a.ini','b.ini')
⑦移动文件:shutil.move(源文件,指定路径),相当于复制到一个指定路径下并重命名
shutil.move('a.ini','/test/b.ini')
2.目录操作
①shutil.copytree(源目录,目标目录),递归复制目录及目录下的文件,状态信息也一并复制了
shutil.copytree('test/','test_copy/') shutil.copytree('test/','test_copy/',shutil.ignore_patterns('*.txt','tmp*'))
copytree加参数shutil.ignore_patterns ('模式')表示忽略符合该条件的文件,即选择性复制
②shutil.rmtree(目标目录):递归删除目录及目录下的文件
shutil.rmtree('test/')
3.打包与压缩
①make_archive(base_name, format, root_dir=' ', base_dir=None, verbose=0,dry_run=0, owner=None, group=None, logger=None) 打包、压缩
整个语句的返回值为压缩或打包后的文件的路径+文件名称(文件名称带有相应格式的后缀)
base_name:压缩、打包后的文件名称,无路径则表示当前路径,如果要保存至指定路径则需要指定路径,此处的文件名称不需加格式后缀,打包或压缩完成后会自动加上
format:压缩或打包的格式,有tar、zip、bztar、gztar等
root_dir:打包时切换到的根路径。也就是说开始打包前,会先执行路径切换,切换到root_dir所指定的路径,默认值为当前路径
base_dir:开始打包的路径。也就是说对base_dir所指定的路径进行打包,默认值为 root_dir
owner和group:创建tar包时使用,默认为用户当前的用户和组
logger: 用于记录日志,通常是logging.Logger对象,可省略
#当前/root目录下,要将/root/tmp/test/目录打包并以gztar格式进行压缩,压缩后名称为test_bak,放置在test相同目录下 import shutil re=shutil.make_archive('/root/tmp/test_bak','gztar','/root/tmp/test/') print(re) #执行结果 /root/tmp/test_bak.tar.gz #上述语句执行前 ls /root/tmp/test/test|grep test* test #上述语句执行后 ls /root/tmp/test/test|grep test* test test.tar.gz