1. 列表 list 操作
排序
2. 文件相干的操作
门路和文件名拆散
文件复制
glob 获取文件绝对路径
前缀后缀判断
3. 字符串 str 操作
宰割切片
4. 其余问题
自定义的 py 文件 import 后找不到门路
5. 注意事项
文件命名
6. 一些操作合集
判断数据类型
汇合 set
利用 bool 矩阵进行索引
执行字符串表达式
filter() 过滤序列
1. 列 表 lis t 操 作
排序
留神: 文件夹读取相干的最好都先排序,否则 zip 排序出 BUG 不好找
文件读取 list 往往为乱序的,为了将 img 和 xml 对应,能够对两个 list 都采纳排序函数
如 img_files.sort(),而后再将两者 zip 后进行遍历。
list.sort()(返回值为 None,可传递参数 reverse=True 逆序排序)
sorted(list)
2. 文 件相干的操作
门路和文件名拆散
办法:
os.path.split()
os.path.splitext()
例子:
file_path = “D:/test/test.py”
(filepath,tempfilename) = os.path.split(file_path)
(‘D:/test’, ‘test.py’)
(filename,extension) = os.path.splitext(tempfilename) (‘test’,
‘.py’)
文件复制
import shutil
shutil.copyfile(‘C: \1.txt’ , ‘D: \1.txt’)
glo b 获 取文件绝对路径
files = sorted(glob.glob( os.path.join( path, ‘ *. ‘) ) )
‘.’ 是匹配项,可替换为.jpg .txt 等制订特定类型,,从而简略获取特定类型的文件绝
对门路。参考链接:https://www.jianshu.com/p/542…
前缀后缀判断
str.startswith(‘this’)
str.endswith(‘.jpg’)
3. 字 符串 str 操 作
宰割切片
在 str 中去掉字符‘a’:
str.strip(‘a’)
str 以所有的 ‘a’ 字符为界进行切割返回切片,留神 ’a’ 也没有了
str.split(‘a’)
4. 其 他问题
自定义的 py 文 件 im port 后 找不 到门路
多半是 __init__.py 文件文件没写或者不对,入口
5. 注 意事项
文件命名
py 文件起名不要和 pip package 一样,不然运行的时候会报错,找都找不到(因为
import 的时候会优先从本地 import 而不是 pip)
6. 一 些操作合集
判断数据类型
isinstance(feature_maps,list)
汇合 se t
利用好 set 的操作能够简化程序,并且减速运算,如交并补差等,加入:set 指令大全
然而留神:汇合中的元素不会有反复!!
a=[1,1,2,3,4,5,5]
b=set (a)
b
{1, 2, 3, 4, 5}
利 用 bool 矩 阵进行索引
(1) i = (pred [:, 4] > conf_thres ) & (pred [:, 2:4] >
min_wh ). all (1) & torch .isfinite (pred). all (1) pred =
pred [i]
(2) class_conf = class_conf [i]
(3)dc = pred [pred [:, -1] == c] # select class c
多说一句,pytorch 的 torch.where 反对很多运算了,切实没有再用 bool 判断(因为这个可能导致梯度计算的矛盾)
执行字符串表达式
eval() 和 exec()
应用场景:
1. 字符串计算式是无奈别辨认成咱们罕用的 float 型的,所以如配置文件等地读取出
来是个字符串,应用 eval() 能够间接将字符串进行计算失去后果。
2. 须要在程序中调用执行命令
区别:能够看出,eval 和 exec 类似度很高,都是执行字符串表达式,然而 eval() 是
一个函数,须要变量来接管函数的执行后果;而 exec() 的字符串外部变量和外界相
同,能够间接执行,返回 None.
* 号省略变量
单引号为多变量,** 为多元素字典变量,例如:
for i, (*pbox, pconf, pcls_conf, pcls) in enumerate(pred)
非凡:多返回值的疏忽
img, *_ = letterbox(img0, new_shape=self.img_size)
filt e r() 过 滤序列
filter(function, iterable)
将可迭代对象传入这个函数,而后外部一一将迭代器迭代到函数中,返回 bool 迭代
器。俩字好用,参考 教程(https://www.runoob.com/python…)。给个例子:
def is_odd(n):
return n % 2 == 1
tmplist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
newlist = list(tmplist)
print(newlist)