出于工作的需求,接触了python,但是有一些基础的函数需要反复调用,每次使用的时候都要重新找一遍材料,为了方便自己,就单独记录了一下自己用的一些有用的参数,分享给大家。
这里的遍历是包含子文件夹的完全遍历,
所有的文件完整路径输出在一个列表中,
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
使用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
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