1。列表列表操作排序2。文件相关操作路径和文件名分离文件复制glob获取文件绝对路径前缀和后缀判断3.字符串str操作拆分slice4。其他问题自定义导入py文件后找不到路径。五、文件命名注意事项六、一些操作collection判断数据类型collectionset使用bool矩阵做索引执行string表达式filter()过滤序列1.listlistt操作排序注意:file最好先排序文件夹读取相关项,不然zip整理出BUG不好找文件。阅读清单经常乱序。为了匹配img和xml,可以对两个列表都使用一个排序函数比如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')文件复制导入shutilshutil.copyfile('C:\1.txt','D:\1.txt')glob获取文件绝对路径files=sorted(glob.glob(os.path.join(path,'*.')))'.'是一个匹配项,可以替换为.jpg、.txt等指定具体类型,从而简单获取具体类型文件的绝对路径。参考链接:https://www.jianshu.com/p/542...前后缀判断str.startswith('this')str.endswith('.jpg')3.字符串str操作splitsliceinstrRemovethecharacter'a':str.strip('a')str将所有'a'字符作为边界切开并返回切片,注意没有'a'str.split('a')4.其他问题自定义导入路径后找不到py文件。__init__.py文件大部分没写好或者写错了。条目5.注意事项文件命名py文件不能和pip包同名,否则运行会报错,找不到。(因为导入的时候,会优先本地导入,而不是pip)6.一些操作集合确定数据类型isinstance(feature_maps,list)setsett善用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]#selectclassc多说一句,pytorch的torch.where支持很多操作,不需要用bool来判断(因为这样可能会导致梯度计算的矛盾)执行字符串表达式eval()和exec()使用场景:1.字符串计算公式无法识别为我们常用的使用的是float类型,所以读出来是字符串如配置文件等,使用eval()可以直接计算字符串得到结果。2、需要在程序中调用执行命令。不同点:可以看出eval和exec很相似,都是执行字符串表达式,但是eval()是一个函数,需要变量来接收函数的执行结果;而exec()中字符串的内部变量与外部相同,可以直接执行,返回None。省略带*和单引号的变量为多变量,**为多元素字典变量,例如:fori,(*pbox,pconf,pcls_conf,pcls)inenumerate(pred)special:ignoreimgwith多个返回值,*_=letterbox(img0,new_shape=self.img_size)filter()filtersequencefilter(function,iterable)将可迭代对象传入这个函数,然后在内部将迭代器一个一个迭代到函数中,返回一个bool迭代器。这两个词很好用,参考教程(https://www.runoob.com/python...)。举个例子:defis_odd(n):returnn%2==1tmplist=filter(is_odd,[1,2,3,4,5,6,7,8,9,10])newlist=list(tmplist)打印(新列表)
