python3 基础模块(随机数,bisect,匹配统计,压缩,csv,logging,getpass,configparser等模块)

主要介绍了随机数模块random,bisect模块,深copy和浅copy,正则匹配re模块,查找匹配文件模块glob和统计模块Counter,大文件督导缓存linecache模块,文件压缩模块(zlib模块,gzip模块),文档的归档压缩tarfile模块,csv模块该模块读写逗号分隔符模块(即读写xls表格),读取配置文件configparser模块,logging模块,处理日志获取计算机登陆名getpass模块等模块

1.随机数模块(random)

   该模块能实现随机数生成,从tuple中随机选择一个数,洗牌,等操作,具体如下:

import randow

print(randow.randow()) #0.0-1.0之间的随机数
print(randow.uniform(a,b)) # a-b之间的随机浮点数
print(randow.randrange(n)) # 0-n之间的随机整数
print(randow.randrange(start,stop,step)) #start-stop,以步长step的随机数
print(randow.choice(items)) #从序列items中随机选择一个数
print(randow.shuffle(items)) #将items随机洗牌
print(randow.sample(items,n)) #从items中随机重复抽样n个
print(<span style="font-family: 'Courier New'; line-height: 24px; white-space: pre-wrap;">random.gauss(WIDTH/2.0</span><span style="font-family: 'Courier New'; white-space: pre-wrap; margin: 0px; padding: 0px; line-height: 1.5 !important;">, SIGMA)</span>)  #高斯分布的随机数,还有其他的分布的随机数

2. bisect模块(类似离散化的分箱,每个箱有标签,形成字典)

如学生成绩 ABCDE 分别对应 100-90,90-80,80-70,70-60,<60(不及格),操作如下:

import random
import bisect

def grade(score, breakpoints = [60, 70, 80, 90], grades = 'EDCBA'):
    i = bisect.bisect(breakpoints, score) #按切割点划分
    return grades[i]

scores = []
for i in range(6):
    scores.append(random.randrange(0,101,1))
results = [grade(score) for score in scores] #语句表达,循环
print('学生成绩:{}\n评定结果:{}'.format(scores, results))


3. copy模块(浅拷贝,深拷贝)

import copy
L1 = [1,2,3]
L2 = copy.deepcopy(L1)
L3 = copy.copy(L1)
L2.append(5) #深拷贝,理解为复制,L2改变不影响L1
L3.append(6) #浅拷贝,理解为引用,L3改变,L1同时也改变


4. 正则匹配re模块,查找匹配文件模块glob和统计模块Counter

 正则匹配模块详细请见:http://blog.sina.com.cn/s/blog_a15aa56901017liq.html

import os
import re
from collections import Counter

path = r'C:\test.txt'
contents = re.findall(r'w+',open(path).read().lower())#读取文件的所有内容(单词序列)
#正则匹配还能有各种匹配字符,很多
print(Counter(contents)) #统计每个单词的次数,形成字典,单词为keys,次数为值,形成键-值对
print(Counter(contents).most_common(3))#输出次数最多的三个单词,对应也有最少的单词函数
查找匹配文件glob模块,非常简单,明白规则,该规则是shell语言的规则,如下:

import glob
'''在python中,glob模块是用来查找匹配的文件的匹配规则:

        *    :   匹配所所有
        ?    :   匹配一个字符
        *.*  :   匹配如:[hello.txt,cat.xls,xxx234s.doc]
        ?.*  :   匹配如:[1.txt,h.py]
        ?.gif:   匹配如:[x.gif,2.gif]
 
如果没有匹配的,glob.glob(path)将返回一个空的list:[]'''
print(glob.glob('c:\\test\\*.*'))

5. 把文件读到缓存,数据不存储在磁盘上,读取到缓存适用于高频率的读取时, 日常编程中如果涉及读取大文件,一定要使用首选linecache模块,相比 open() 那种方法要快N倍,它是你读取文件的效率之源,来源:http://www.iplaypython.com/module/linecache.html

import os
import linecache
path = r'C:\test.txt'
content = ''
cache_data = linecache.getlines(path)#getlines函数最常用
for line in range(len(cache_data)):
    content +=cache_data[line]
print(content)

6. 文件压缩模块(zlib模块,gzip模块),文档的归档压缩tarfile模块

首先看看zlib模块,主要函数zlib.compress(bytes(data,'utf-8'))和zlib.decompress(cdata),例子如下:

import os
import zlib
path = r'C:\test.txt'
content = ''
fp = open(path,'r+')
for line in fp:
    content +=line
com_data = zlib.compress(bytes(content,'utf-8'))#指定压缩的格式
decom_data = zlib.decompress(com_data)


gzip模块功能很强大,在gzip模块提供了GzipFile类,在该类中提供了像open(),compress()和depress()等一些方便的方法,GzipFile类在读写gzip格式的文件的时候,自动的压缩和解压缩数据类似于操作普通的文件对象。

import os
import gzip
path = r'C:\test.txt'
content = b'adfa'   #二进制一定要加上b,否则下面的写操作要出错
with gzip.open(path,'wb') as fp: #二进制写,同时压缩成zip
    fp.write(content)
fp.close()

with gzip.open(path,'rb') as f:
    f.read()
f.close()


文档的归档压缩为tar文件的模块为tarfile,它允许 把工作空间下面的所有文件,打包生成一个tar文件, 同时提供一个方法把该tar文件中的一些文件解压缩到, 指定的目录中。
import os
import tarfile
ext_name = r'C:test.txt' #提取指定文件名的文件
tar_path = r'C:\temp.tar'
path = os.path.split(tar_path)[0]
mkdir(path) #新建目录
mkdir(tar_path)
items = os.listdir('./')#获取当前工作目录的所有文件
#压缩
with tarfile.open(tar_path,'w') as tar:
    for n in items:
        tar.add(n)
tar.close()
#解压指定文件名的文件
with tarfile.open(tar_path,'r') as data:
    names = tar.getnames()
    for name in names:
        if name.split('.') ==ext_name:
            tar.extract(name,path = ext_path)


7.csv模块

该模块读写逗号分隔符模块(即读写xls表格),需要将.xls文件另存为.csv文件(execl就能转换)
详细见:http://www.2cto.com/kf/201303/194320.html

8.读取配置文件configparser模块,详细见:http://www.codesky.net/article/201003/122500.html

9.logging模块,处理日志(略)

10.获取计算机登陆名getpass模块:

import os
import getpass

user_name = getpass.getuser()
print(user_name)







   

你可能感兴趣的:(python3 基础模块(随机数,bisect,匹配统计,压缩,csv,logging,getpass,configparser等模块))