python库

datetime库

处理时间和日期

import datetime
dtBirth = datetime.date(2000, 9, 27)    # 创建日期对象,日期为2000年9月27日
print(dtBirth.weekday())    # 输出dtBirth代表的日期是星期几,0表示星期一
dtNow = datetime.date.today()   # 取今天的日期
print(dtBirth < dtNow)          # True 日期可以比较大小
life = dtNow - dtBirth          # 取两个日期的时间差
print(life.days, life.total_seconds())  # 相差的天数, 相差的秒数
delta = datetime.timedelta(days=-10)    # 构造时间差对象,时间差为-10天
newDate = dtNow + delta                 # newDate代表的日期是dtNow的日期往前数10天
print(newDate.year, newDate.month, newDate.day, newDate.weekday())
print(newDate.strftime(r'%m/%d/%Y'))
newDate = datetime.datetime.strptime("2020.08.05", "%Y.%m.%d")
print(newDate.strftime('%Y%m%d'))

tm = datetime.datetime.now()    # 取时间,精确到微秒
print(tm.year, tm.month, tm.day, tm.hour, tm.minute, tm.second, tm.microsecond)
tm = datetime.datetime(2017, 8, 10, 15, 56, 10, 0)
print(tm.strftime("%Y%m%d %H:%M:%S"))
print(tm.strftime("%Y%m%d %I:%M:%S %p"))
tm2 = datetime.datetime.strptime("2013.08.10 22:31:24", "%Y.%m.%d %H:%M:%S")

random库

随机库(伪随机)

random库的函数

random.random() 随机生成一个[0,1]之间的数
random.uniform(x,y) 随机生成一个[x,y]之间的数(含两端,下同)。x,y可以是小数
random.randint(x,y) 随机生成一个[x,y]之间的整数。x,y都是整数
random.randrange(x,y,z) 在range(x,y,z)中随机取一个数
random.choice(x) 从序列x中随机取一个元素。x可以是为列表、元组、字符串
random.shuffle(x) 将列表x的元素顺序随机打乱
random.sample(x,n) 从序列x中随机取出一个长度为n的子序列。x可以是元组、列表、集合
random.seed(x) 设置随机种子为x。x可以是整数、元组、字符串(不设置默认以时间为种子),种子一样产生的伪随机数就是一样的
import random

# random.seed(2)
print(random.random())
print(random.uniform(1.2, 7.8))
print(random.randint(-20, 70))
print(random.randrange(2, 30, 3))
print(random.choice("hello,world"))
print(random.choice([1, 2, 'ok', 34.6, 'jack']))
lst = [1, 2, 3, 4, 5, 6]
random.shuffle(lst)
print(lst)
print(random.sample(lst, 3))

jieba库

分词

import jieba    # 导入分词库


s = '我们热爱中华人民共和国'
lst = jieba.lcut(s)     # 分词结果是一个列表,默认采用精确模式分词,分出的结果正好拼成原文
print(lst)
print(jieba.lcut(s, cut_all=True))  # 全模式分词,输出所有可能的词
print(jieba.lcut_for_search(s))     # 搜索引擎模式分词

s = '拼多多是个网站'
print(jieba.lcut(s))
jieba.add_word('拼多多')
print(jieba.lcut(s))

openpyxl库

读取excel表格

# excel文件的读取
import openpyxl as pxl


book = pxl.load_workbook(r'C:\users\luoheng_sdjzu\Desktop\交接清单.xlsx', data_only=True)    # book是整个excel文件
# data_only=True 代表将公式计算为值
sheet = book.worksheets[0]  # 取第0张工作表
# sheet = book.active       # 取活跃的工作表(缺省就是第0张工作表)
# sheet = book['交接内容']    # 取名为“交接内容”的工作表
print(sheet.title)      # 取工作表的名字(显示于工作表下方的标签)
print(sheet.min_row, sheet.max_row)     # 打印最小有效行号,最大有效行号
print(sheet.min_column, sheet.max_column)   # 输出最小有效列号,最大有效列号

# for sheet in book.worksheets:   # worksheets是工作表构成的列表
#     print(sheet.title)

for row in sheet.rows:          # 按行遍历整个工作表,从第一行到sheet.max_row行(含)
    for cell in row:            # 遍历一行的每个单元格。cell是一个单元格
        print(cell.value)       # cell.value是单元格的值,空单元格值是None

for cell in sheet['A']:         # 遍历名为A的那一列
    print(cell.value)

for cell in sheet[3]:           # 遍历第三行
    print(cell.value, type(cell.value), cell.coordinate, cell.col_idx, cell.number_format)
print(pxl.utils.get_column_letter(5))   # 根据列号求列名
print(pxl.utils.column_index_from_string('D'))  # 根据列名求列号
print(pxl.utils.column_index_from_string('AC'))
colRange = sheet['A:B']                 # 从第C列到第F列(含F列)
for col in colRange:        # 按列遍历从第C列到第F列,col代表一列
    for cell in col:        # cell是一个单元格
        print(cell.value)

rowRange = sheet[5:10]      # rowRange代表第5行到第10行(含第十行)
for row in sheet['A1':'B2']:    # 按行遍历左上角是A1右下角是D2的子表
    for cell in row:
        print(cell.value)
print(sheet['B4'].value)
print(sheet.cell(row=8, column=4).value)        # 输出第8行第4列单元格的值

创建excel表格

import openpyxl
import datetime


book = openpyxl.Workbook()      # 在内存中创建一个excel文档,W大写
sheet = book.active             # 取第0个工作表
sheet.title = "sample1"         # 工作表取名为sample1
dataRows = (
    (10, 20, 30, 40.5),
    (100, 200, '=sum(A1:B2)'),
    [],
    ['1000', datetime.datetime.now()],
)
for row in dataRows:
    sheet.append(row)           # 在工作表中添加一行
# 设置B列宽度,使其能完整显示B4单元格里的时间
sheet.column_dimensions['B'].width = len(str(sheet['B4'].value))
sheet['E1'].value = "=sum(A1:D1)"
sheet['E2'].value = 12.5                # 单元格的值为小数
sheet['E2'].number_format = "0.00%"     # 单元格显示格式为百分比形式
sheet['F1'].value = 3500                # 单元格值类型为int
sheet['F2'].value = "35.00"             # 单元格值类型为str
sheet['F3'].value = datetime.datetime.today().date()
sheet.column_dimensions['F'].width = len(str(sheet['F3'].value))
sheet.row_dimensions[2].height = 48     # 设置第2行的高度为48 points
sheet2 = book.create_sheet("Sample2")   # 添加名为sheet2的工作表
sheet2['A1'] = 50                       # 将A1单元格的值设置为50
sheet2 = book.create_sheet("Sample0", 0)    # 创建一个新的工作表,并且它的编号为0
sheet3 = book.copy_worksheet(sheet)         # 添加一张新工作表,其为sheet的拷贝
book.remove_sheet(book['Sample2'])          # 删除名为Sample2的工作表
book.save(r'd:\python\sample.xlsx')            # 保存文件

将字符串转换为真正的数字

import openpyxl as pxl


book = pxl.load_workbook(r'd:\python\test3.xlsx')
for sheet in book.worksheets:
    for row in sheet.rows:
        for cell in row:
            v = cell.value
            if type(v) == str:
                if v.isdigit():         # 如果v全部由数字组成
                    cell.value = int(v)
                else:
                    try:
                        cell.value = float(v)
                    except:
                        pass

book.save(r'd:\python\test4.xlsx')

将数字转换为字符串

import openpyxl as pxl


book = pxl.load_workbook(r'd:\python\test2.xlsx')
for sheet in book.worksheets:
    for row in sheet.rows:
        for cell in row:
            if type(cell.value) == int or type(cell.value) == float:
                cell.value = str(cell.value)

book.save(r'd:\python\test3.xlsx')

 Pillow库

用于图像处理的库

图像的缩放

from PIL import Image   # 导入Image类进行图像处理


img = Image.open(r'C:\Users\luoheng_sdjzu\Desktop\11.jpg')    # 将图像文件载入对象image
w, h = img.size         # 获取图像的宽和高(单位:像素),img.size是个元组
newSize = (w//2, h//2)  # 生成一个新的图像尺寸
newImg = img.resize(newSize)    # 得到一个新的图像,图像的宽和高都为原图像的一半
newImg.save(r'C:\Users\luoheng_sdjzu\Desktop\grass_half.jpg')   # 保存新图像
newImg.thumbnail((128, 128))    # 变成宽高各128像素的缩略图
newImg.save(r'C:\Users\luoheng_sdjzu\Desktop\grass_thumb.png', "PNG")  # 保存新图像文件为png文件
newImg.show()           # 显示图像文件

 图像的旋转、翻转和滤镜

# 图像的旋转、翻转和滤镜效果
from PIL import Image
from PIL import ImageFilter         # 实现滤镜效果需要


img = Image.open(r'd:\test\grass_half.jpg')
print(img.format, img.mode)         # JPEG RGB
newImg = img.rotate(90, expand=True)    # 图像逆时针旋转90度
# newImg.show()                       # 显示图像
newImg = img.transpose(Image.FLIP_LEFT_RIGHT)   # 左右翻转
newImg = img.transpose(Image.FLIP_TOP_BOTTOM)   # 上下翻转(颠倒)
newImg = img.filter(ImageFilter.BLUR)           # 模糊效果
newImg.show()

# 滤镜效果:
# ImageFilter.CONTOUR     # 轮廓效果
# ImageFilter.EDGE_ENHANCE    # 边缘增强
# ImageFilter.EMBOSS          # 浮雕
# ImageFilter.SMOOTH      # 平滑
# ImageFilter.SHARPEN     # 锐化

图像的裁剪

# 图像的裁剪
from PIL import Image


img = Image.open(r"d:\test\11.jpg")
w, h = img.size[0]//3, img.size[1]//3
gap = 10        # 九宫图中相邻两幅子图间的空白宽10像素
newImg = Image.new("RGB", (w * 3 + gap * 2, h * 3 + gap * 2), "white")
for i in range(0,3):
    for j in range(0,3):
        clipImg = img.crop((j*w, i*h, (j+1)*w, (i+1)*h))
        clipImg.save(r"d:\test\grass%d%d.jpg" %(i, j))
        newImg.paste(clipImg, (j*(w+gap), i*(h+gap)))
newImg.save(r"d:\test\grass9.jpg")          # 保存九宫格
newImg.show()

图像的素描化

# 图像的素描化
from PIL import Image
def makeSketch(img, threshold):
    w, h = img.size
    img = img.convert('L')      # 图像转换为灰度模式
    # img.show()
    pix = img.load()            # 获取像素矩阵
    for x in range(w-1):
        for y in range(h-1):
            if abs(pix[x,y] - pix[x+1, y+1]) >= threshold:
                pix[x, y] = 0   # 黑色
            else:
                pix[x, y] = 255     # 白色
    return img

img = Image.open(r"d:\test\11.jpg")
img = makeSketch(img, 15)       # 阈值threshold为15
img.show()

为图像添加水印

 

posted @ 2021-05-25 15:33  李成敏  阅读(49)  评论(0编辑  收藏  举报