upgrade pip 失败,pip install —upgrade pip 报错

  upgrade pip 失败,pip install —upgrade pip 报错

  环境:cocos creator 2 . 0 . 9;py hon 3 . 7 . 4;PyCharm年1月1日(通讯)。

  当我接手其他同事的项目时,我在prefab中发现了500多个缺失的脚本。我在项目中寻找它,但是我找不到丢失的脚本的uuid。这个丢失的参考说明没用。一个一个清除太费时间了。用python来处理它们。Btw,你要找的脚本也是用python写的。以下是。

  #!/usr/野生火龙果/env python # coding=utf-8 # python 3 . 7 . 4 importosrcpath= project path target= 64139 e6e-740 a-4807-8c 20 def findfilesbypend():print)FINT F,File inos.walk=0: foriinfile: if 。meta ini: #。元文件filetotledir=OS.path.join(n,I ) print(filename:(0))。format(filetotledir))with open(filetotledir)asfile _ object 3360 lines=file))In Else 3360 continue if _ _ name _= _ main _ :FindFilesByppend()print(result),首先coccult中的节点是dictionary type details/87259315),我们检查整个prefab,找到 _ _ type _ ,然后找到引用这些缺失类的组件。组件结构如下。

  需要的是找到对应的id并删除。(我用了frame的“__id__”

  类结构如下。

  去掉之后,为什么放入引擎进行编译,发现打不开?因此,在引擎中手动删除了一个缺失脚本。通过比较svn中的早期版本,你发现当一个类被删除时,prefab中所有大于该类对应ID的ID都会自己变成-1。

  这个很好解决。递归遍历处理就够了。下面是完整的代码。

  #!/usr/野生火龙果/env python # coding=UTF-8 # python 3 . 7 . 4 ImportTimeImportJSON #预制部分无用类型srcPath=。/sample/temp . prefab target _ keyword= 641395 ud API B4 wgzlzhuejc 保存路径=。/样本/1。在…之时prefab start get _ list=[使用frame的__id__查找-3360 if type)dict 1)==dict:for key _ next _ id,value _ next _ id指示1。项目(如果类型为3360)vava tid

  target _ num:value _ next _ id[ _ _ id _ _ ]=value _ next _ id[ _ _ id _ _ ]-1 else:findid(value _ next _ id,target _ num)elif key _ next _ id== _ _ id _ _ :if dict 1[key _ next _ id]target _ num:dict 1[key _ next _ id]=dict 1[key _ next _ id]-1 elif type(value _ next _ id)==list:for list _ item in value _ next _ id:if其他类型:{2}键:{0},值:{1}"。format(key_next_id,value_next_id,type(value _ next _ id)))else:print(非字典类型)def change prefab():file _ in=open(src path, r ,encoding=UTF-8) # 1,file_out=open(savePath, w ,encoding=UTF-8 ,newline= )JSON _ prefab=JSON。加载(文件输入)#找到丢失的目标类对于json _预置中的JSON _ obj:if JSON _ obj[ _ _ type _ _ ]==target _ keyword:target _ list。追加(JSON _ obj)#倒序删才不会引起错误target _ list。sort(key=lambda ele:ele[ frame ][ _ _ id _ _ ],reverse=True)target _ list中水手的打印(目标列表):#删丢失的类json_prefab.remove(tar) #删丢失的类在其他组件上的引用对于json _预置中的JSON _ obj:if JSON _ obj[ _ _ type _ _ ]= cc .节点:对于JSON _ obj[ _ components ]:if tar[ frame ][ _ _ id _ _ ]==component[ _ _ id _ _ ]:JSON _ obj[ _ components ].删除(组件)分隔符#递归tartget _ list中水手的_ _ id _ _-1:JSON _ prefab中json_obj的:findid(json_obj,tar[ frame ][ _ _ id _ _ ])# indent=2按照缩进格式确保_ascii=False可以消除数据包含中文的乱码问题file _ out。写(JSON。转储(JSON _ prefab,indent=2,确保_ ascii=False))file _ in。close()file _ out。close()if _ _ name _ _= _ _ main _ _ :time 1=time。time()打印(-start-{ 0 } ).格式(时间1))改变prefab()时间2=时间。time()打印(-end-{ 0 } .格式(时间2))打印(u 总共耗时: str(时间2-时间1)s )到这,就达到我想要的效果了。

  接下来,介绍下第二种方法,逐行读取,逐行写入。缺点是:较难通用,要算行数。有时会遇上坑,丢失的类结构有些参数为空,就会少算几行

  导入时间导入JSON def read _ all _ part(filename):with open(filename, r ,encoding=UTF-8 ,newline= )as f:# UTF-8 ASCII lines=f . readlines()return lines #预制件批量去掉无用的类srcPath= ./样品/温度。prefab target _ keyword= 641395 uda PIB 4 wgzlzhuejc 保存路径= ./样本/温度1。预设 components _ list=[]#丢失的组件的(创建者本身节点无__id__,通过设计的__id__来找)# 删除丢失的类def delMissingClassType(target _ str,key _ words):new _ all _ line=[]pop _ list=[]is _ value _ null={ } I=0 for line in target _ str:if key _ words in line:pop _ list。append(I)if target _ str[I 10]:if value :null in target _ str[I 10]:is _ value _ null[str(I)]=True else:#不是的话,就代表价值是有值的is _ value _ null[str(I)]=False else:print(无价值或行数不对,I:,I)new _ all _ line。追加(行)I=I 1 #删除要倒序删,不然索引会乱pop _ list。排序(反向=真)打印( pop _ list:,pop_list) #去除那个类名的用行数计算有坑,因为有时"价值"是空少2行对于流行列表中的pop _ item:offest _ num=17 if is _ value _ null[str(pop _ item)]:offest _ num=15j=pop _ item offest _ num while j pop _ item:#-1j=j-1 new _ all _ line。pop(j)return new _ all _ line #获取丢失的类上对应的iddef get_id_list(target_str,key _ words):id _ list=[]I=0 for line in target _ str:if key _ words in line:if _ _ id _ _ in target _ str[I 8]:key _ id=target _ str[I 8].split(: ) key_temp=key_id[1].split( \ n )new _ num=int(key _ temp[0],base=10)id _ list。append(new _ num)I=I 1 print( id _ list:,id _ list)返回id_list#删除在组件列表上的丢失组件(这部分出问题了,已修复)def del _ components _ id(target _ str,target _ id _ list):new _ all _ line=[]id _ line=[]I=0 for line in target _ str:new _ all _ line。为target _ id _ list追加(行):if _ _ id _ _ :{ 0 } \ n .格式(字符串(目标标识))在第:#加\n才可以打印(目标标识:,目标标识)标识行。追加(I)break I=I 1 id _ line。id _ line中pop _ item的sort(reverse=True)print( id _ line ,id _ line):j=pop _ item 3而j=j-1 new _ all _ line。pop(j)return new _ all _ line #序号排好def need_to_write(target_str,target _ num):new _ all _ line=[]for line in target _ str:new _ line _ rep=line if _ _ id _ _ in line:key _ id=line。split(:)key _ temp=key _ id[1].split( \ n )new _ num=int(key _ temp[0],base=10)if new _ num target _ num:new _ num=new _ num-1 new _ line _ rep=line。replace(key _ temp[0],str(new _ num))new _ all _ line。append(new _ line _ rep)return new _ all _ line def other main 1():all _ str=read _ all _ part(src path)#删除丢失的类的id:641395 uda PIB 4 wgzlzhuejc new _ all _ line _ temp=delMissingClassType(all _ str,target_keyword) #获取帧id id_list=get_id_list(all_str,target_keyword) #删除成分与该类上框架编号相等的_ _ id _ _ new _ all _ line _ temp 1=del _ components _ id(new _ all _ line _ temp,id_list) id_list。sort(reverse=True)new _ all _ line 2=new _ all _ line _ temp 1打印(id _ list)id _ list中的id:new _ all _ line=need _ to _ write(new _ all _ line 2,ids)new _ all _ line 2=new _ all _ line #是__id__ -1 f=open(savePath, w ,encoding=UTF-8 ,newline=) # windows下游戏开发工具预制品的格式f . writeline(new _ all _ line 2)f . close()至此,就是我想要记录的内容了。如有错误,敬请各位大佬提点下,谢谢!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: