欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python:日常应用汇总

程序员文章站 2022-06-24 15:33:36
判断路径中是否包含中文 将文件保存为csv格式 import csv 通过opencv读取图片分辨率 python opencv2安装: pip install opencv python 获取文件夹内特定的文件 将图片转换为Base64编码 判断文件或文件夹是否存在 比较文件差异 读取pkl文件 ......

判断路径中是否包含中文

import re
def iscontainchinese(path:str) -> bool :
    cnpatter=re.compile(u'[\u4e00-\u9fa5]+')
    match=cnpatter.search(path)
    flag=false
    if match:
        flag=true
    else:
        flag = false
    return flag

将文件保存为csv格式

import csv

def writeresulttocsv(**kwags):
    v = [ v for v in kwags.values()]
    # v=lambda v:[ v for v in kwags.values()]
    # print(v)
    for item in v:
        try:
            header=["文件名","高度","宽度"]
            # 如果不加newline参数,则保存的csv文件会出现隔行为空的情况
            with open(os.getcwd()+"\\result.csv",'w+',newline="") as fw:
                csvwriter=csv.writer(fw)
                csvwriter.writerow(header)
                # print(item.items())
                for k,v in item.items():
                    print(f"{k} {v}")
                    csvwriter.writerow([k,str(v[0]),str(v[1])])
        except exception as e:
            pass

通过opencv读取图片分辨率

python opencv2安装: pip install opencv-python

import cv2
def getresolution(path,imglist):
    temdict={}
    for item in imglist:
        #  opencv 不支持中文路径
        img=cv2.imread(path+"\\"+item)
        # cv2.namedwindow("image")
        # cv2.imshow("image",img)
        # cv2.waitkey(1)
        # cv2.destroyallwindows()
        imgresolution=img.shape
        temdict[item]=imgresolution
    return temdict

获取文件夹内特定的文件

import os

def getimglist(path):
    imglist=[ img for img in os.listdir(path)
              if os.path.isfile(os.path.join(path,img)) and (img.endswith(".jpg") or img.endswith(".jpge") or img.endswith(".png"))
    ]
    return imglist

将图片转换为base64编码

import base64

def converimgtobase64(path,imglist):
    resultlist={}
    for img in imglist:
        try:
            with  open (path+"\\"+img,'rb') as fr:
                data=base64.b64encode(fr.read())
                tempresult=data.decode()
                resultlist[img]=tempresult
        except exception as e:
            resultlist["exception"]=e
    return resultlist

判断文件或文件夹是否存在

import os
def isexistfile(path):
    try:
        if (os.path.exists(path)):
            os.remove(path)
    except exception as identifier:
        pass

比较文件差异

import os
# 描述信息:一个文件夹内一张图片对应一个xml或者只有图片或只有xml

def listfile(path):
    imglist=[]
    xmllist=[]
    extendisxmlcount=0
    extendisimgcount=0
    for file in os.listdir(path):
        filelist=file.split(".")
        try:
            if filelist[-1] == "xml":
                extendisxmlcount+=1
                xmllist.append(filelist[0])
            elif filelist[-1] == "jpg" or filelist[-1] == "jpeg" or filelist[-1] == "png":
                extendisimgcount+=1
                imglist.append(filelist[0])
        except exception as e:
            print("error")
    differenceresult=set(imglist+xmllist)
    return imglist,xmllist,extendisimgcount,extendisxmlcount,differenceresult

def comparecount(xmlcount,imgcount):
    '''
    -1: xml >  img
    0 : xml == img
    1 : xml <  img
    '''
    # compareresult=-9999
    differencecount=-9999
    if (xmlcount > imgcount):
        # print(f"xml count {xmlcount} is more than img count {imgcount} ,difference is {xmlcount-imgcount}")
        compareresult=f"xml count {xmlcount} is more than img count {imgcount} ,difference is {xmlcount-imgcount}"
        differencecount=xmlcount-imgcount
    elif(xmlcount < imgcount):
        # print(f"xml count {xmlcount} is less than img count {imgcount} ,difference is {imgcount-xmlcount}")
        compareresult=f"xml count {xmlcount} is less than img count {imgcount} ,difference is {imgcount-xmlcount}" 
        differencecount=imgcount-xmlcount
    elif (xmlcount == imgcount):
        # print(f"xml count {xmlcount} is equal img count {imgcount} ,difference is {imgcount-xmlcount}")
        compareresult=f"xml count {xmlcount} is equal img count {imgcount} ,difference is {imgcount-xmlcount}"
        differencecount=imgcount-xmlcount
    return compareresult,differencecount

def removeduplicateitem(lista,listb):
    tempseta=set(lista)
    tempsetb=set(listb)
    if len(tempseta) >= len(tempsetb):
       result=tempseta-tempsetb
    else:
       result=tempsetb-tempseta
    return result

读取pkl文件

import pickle
def readfile(path):
    result=""
    try:
       with open (path,'rb') as fr:
           result=pickle.load(fr)
    except exception as e:
        result=e
    return result

存取为pkl文件

import pickle
def writestrtologfile(path,datastr):
    for i in range(2,5):
        pickletofile(path+"\\"+"error"+str(i)+".pkl",datastr)

def pickletofile(path,filename):
    with open(path,'wb') as fw:
        pickle.dump(datastr,fw)

将时间转换为unix时间戳

import time
import datetime
def changdatetimetounix(inputdatetime):
    '''
    将标准时间转换为unix时间戳
    time strptime() 函数根据指定的格式把一个时间字符串解析为时间元组
    time.strptime(string[, format])
    '''
    timearray = time.strptime(inputdatetime, "%y-%m-%d %h:%m:%s")
    timestamp = int(time.mktime(timearray))
    return timestamp