工作以来整理的python常用函数,提升工作效率

前言

出于工作的需求,接触了python,但是有一些基础的函数需要反复调用,每次使用的时候都要重新找一遍材料,为了方便自己,就单独记录了一下自己用的一些有用的参数,分享给大家。

2021年5月13日更新

遍历文件夹(包括子文件夹)

这里的遍历是包含子文件夹的完全遍历,
所有的文件完整路径输出在一个列表中,

import os
def get_filelist(dir, Filelist):
    newDir = dir
    if os.path.isfile(dir):
        Filelist.append(dir)
        # # 若只是要返回文件文,使用这个
        # Filelist.append(os.path.basename(dir))
    elif os.path.isdir(dir):
        for s in os.listdir(dir):
            # 如果需要忽略某些文件夹,使用以下代码
            #if s == "xxx":
                #continue
            newDir=os.path.join(dir,s)
            get_filelist(newDir, Filelist)
    return Filelist

新建文件夹

这里新建文件夹是包含一些判断的,如果文件夹已经存在会反馈一个状态
如果文件夹已存在,返回True状态
如果文件夹不存在,新建文件夹并返回False状态

import os
def mkdir(path):
    # 去除首位空格
    path=path.strip()
    # 去除尾部 ‘/’ 符号
    path=path.rstrip("/")
    # 判断路径是否存在
    isExists=os.path.exists(path)  
    # 判断结果
    if not isExists:
        # 如果不存在则创建目录
        # 创建目录操作函数
        os.makedirs(path)  
        print (path+' 创建成功')
        return True
    else:
        # 如果目录存在则不创建,并提示目录已存在
        print (path+' 目录已存在')
        return False

统计脚本运行时间

对时间的统计是每个脚本的调试过程都少不了的,实现途径有很多,以下是我常用的一种方式:

import datetime as dtime
startTime = dtime.datetime.now()
print('用时: {}'.format(dtime.datetime.now() - startTime))

内存回收

因为工作时用图像数据的场景比较多,为了方便程序在计算机上平稳运行,实时采用内存回收是一个很好的解决方式

import gc
# 在collect前搭配 del 函数使用
gc.collect()

字符输出,并保留固定位数

字符输出过程中对位数的控制:

print("%d %.4f" %(full_num[0],full_num[1]))
# 表示保留小数点后4位数

时间字符串获取

每天自动跑程序的时候用得到的函数
可以用时间字符串来确认时间

import datetime as dtime
date = (dtime.datetime.now() + dtime.timedelta(days = -1)).strftime('%Y%m%d') # 获取日期,例:20210305运行,结果为20210304

xml文件读取

使用lxml函数来进行xml文件的读取
如果对于xml格式理解的不好也可以用读取文本文件的方式来完成xml文件读取

from lxml import etree as ET
# path = '/Users/apple/Downloads/test.xml'
dom = etree.parse(path) # parse是一种lxml支持的xml的解析方式
root = dom.getroot()
# root为第一层,root.find为在二级目录中遍历找寻,以此类推
count = root.find("FileBody").find("ReceiveCount").text

如果出现节点名字一样,也可以是用索引的当时来进行指定子节点

xml文件写入

from lxml import etree, objectify
E = objectify.ElementMaker(annotate=False)
anno_tree = E.annotation(
    E.folder('VOC2014_instance'),
    E.filename("test.jpg"),
    E.source(
        E.database('COCO'),
        E.annotation('COCO'),
        E.image('COCO'),
        E.url("http://test.jpg")
    ),
    E.size(
        E.width(800),
        E.height(600),
        E.depth(3)
    ),
    E.segmented(0),
)
# 如果需要在anno_tree的基础上加其他标签的话用append即可:
E2 = objectify.ElementMaker(annotate=False)
anno_tree2 = E2.object(
    E.name("person"),
    E.bndbox(
        E.xmin(100),
        E.ymin(200),
        E.xmax(300),
        E.ymax(400)
    ),
    E.difficult(0)
)
anno_tree.append(anno_tree2) # 将新构建的element加入anno_tree,结合文件读取一起理解更容易
etree.ElementTree(anno_tree).write("text.xml", pretty_print=True)
# 输出新xml

2021年5月30日更新

获取日期

获取日期的目的是可以自适应地更改日期,对于以日期归档的情况很有用,
“-1”代表的是前一天,后面的strftime指代的是输出日期的格式

import datetime as dtime
date = (dtime.datetime.now() +
                dtime.timedelta(days=-1)).strftime('%Y%m%d') # 20210529
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

beeean

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值