#获取字段类型
def gettype(value):if isinstance(value,int):if isinstance(value,bool):return 'bool'return 'integer'elif isinstance(value,bytes):try:buff=value.decode('utf-8')#这个txt 随便写的了       txt='stringa'except:try:buff=value.decode('utf-16')txt='stringb'except:passreturn txtelif isinstance(value,str):return 'string'elif isinstance(value,list):return 'array'elif isinstance(value,dict):return 'dict'else:return 'Error Type:'+str(type(value))#转成str型,比较方便后面使用
def tostr(key):keytype=gettype(key)if keytype=='stringa':return key.decode('utf-8')elif keytype=='stringb':return key.decode('utf-16')elif keytype=='string':#声明全局变量global strIDglobal strDictstrDict[strID]=keystrID=strID+1return str.format('%04d' % (strID-1))return keyelif keytype=='integer':return str(key)elif keytype=='bool':if key==True:return 'true'else:return 'false'else:return 'Unknow Type Return!'#字典转字符
def dict2str(dictx):global gtabbuff=''tabs=gettabs()buff=buff+tabs+'<dict>\n'gtab=gtab+1tabs=gettabs()for key in dictx:buff=buff+tabs+'<key>'+tostr(key)+'</key>\n'buff=buff+tabsvalue=dictx[key]valuetype=gettype(value)if valuetype=='dict':buff=buff+dict2str(value)elif valuetype=='array':buff=buff+list2str(value)elif valuetype=='bool':buff=buff+'<'+tostr(value)+'/>\n'else:if valuetype=='stringa' or valuetype=='stringb':valuetype='string'buff=buff+'<'+valuetype+'>'+tostr(value)+'</'+valuetype+'>\n'gtab=gtab-1tabs=gettabs()buff=buff+tabsbuff=buff+'</dict>\n'return buff
#列表在plist的xml格式里为array
def list2str(listx):global gtabbuff=''tabs=gettabs()buff=buff+tabs+'<array>\n'gtab=gtab+1tabs=gettabs()for value in listx:valuetype=gettype(value)if valuetype=='dict':buff=buff+dict2str(value)elif valuetype=='array':buff=buff+list2str(value)else:print('list ')        gtab=gtab-1tabs=gettabs()buff=buff+tabs+'</array>\n'return buff#缩进距离,排版xml,代码很乱。。。。。欢迎拍砖
def gettabs():buff=''for i in range(gtab):buff=buff+'\t'return buffdef exporttxt(fn):plist=biplist.readPlist(fn)buff=dict2str(plist)fp=open(fn[:-5]+'src','w',encoding='utf-8')temp='''<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">\n'''fp.write(temp)fp.write(buff)fp.write('</plist>')fp.close()if __name__=='__main__':import globimport osimport bipliststrID=0strDict={}files=glob.glob('*.plist')for fn in files:if os.path.isfile(fn):#全局变量  字符串IDstrID=0strDict={}gtab=0exporttxt(fn)print('Over!')

												

python 二进制Plist文件转Xml格式Plist相关推荐

  1. Properties文件的XML格式

    转载自 Properties文件的XML格式 想必大家都用过*.properties文件,作为配置文件.但是,如果该文件写入了中文,待编译后内容就会成为乱码,使用native命令也好.使用ant执行编 ...

  2. 通过Python实现NC文件转GeoTiff格式

    通过Python实现NC文件转GeoTiff格式 〇.目录 通过Python实现NC文件转GeoTiff格式 一.前言 二.基本了解 三.功能实现 四.成图预览 五.参考 六.总结 一.前言 基于Py ...

  3. unity向服务器发送xml文件格式,Unity读取Excel文件转换XML格式文件的方法

    Unity读取Excel文件转换XML格式文件的方法 发布时间:2020-06-23 09:34:33 来源:亿速云 阅读:107 作者:清晨 不懂Unity读取Excel文件转换XML格式文件的方法 ...

  4. python处理csv文件将字符串格式XXXX年XX月XX日转化为datetime64XXXX-XX-XX格式,可以进行索引设置和日期计算

    python处理csv文件将字符串格式XXXX年XX月XX日转化为datetime64XXXX-XX-XX格式,可以进行索引设置和日期计算 python读取csv文件中,某列卫XXXX年XX月XX日, ...

  5. .net 将html写成的table 转换成excel_Python读取二进制,HTML,XML格式存储Excel

    前言 RPA设计器版本:2020.2 Python读取三种不同存储格式Excel文件 Excel文件的存储格式有多种,有我们平常公认的二进制格式,也有HTML格式,还有XML格式的等. 目前,小编接触 ...

  6. python批量json文件转xml文件脚本(附代码)

    场景:在使用了mask rcnn跑实验后标注了大量地json格式文件,现在打算使用yolo和faster rcnn 跑实验 所以需要将之前地json文件转为xml     但是找了很久,没发现有批量处 ...

  7. python 读取excel文件 效率 时间 格式_python读取Excel文件中的时间数据

    在使用python读取Excel文件中的时间格式,碰到的时间格式转换问题: 读取这样的表格: 输出这样的数据结果: 然而这样的结果却不是我们想要的,我们需要的是这样的结果: 1.安装python官方库 ...

  8. java转换CSV文件生成xml格式数据

    注册CSDN快六个月了,之前一直是看园子里的文章,或者碰到问题时,进来查点资料,今天终于决定写一篇自己在园子里的blog. 好吧,鉴于水平太菜,就只记录过程,其中原理啥的并不是很明晰,所以此blog只 ...

  9. python将txt文件转为excel格式以及写入excel超过65536行报错问题解决方法

    参考链接: https://blog.csdn.net/levy_cui/article/details/82252183 https://blog.csdn.net/levy_cui/article ...

最新文章

  1. Entity Framework 6 Recipes 2nd Edition(10-5)译 - 在存储模型中使用自定义函数
  2. 使用Capture 制作元件库
  3. centos7安装php5.2yum源操作_CentOS 7下Yum安装PHP7.2步骤
  4. 服务器文件嗅探,嗅探TFTP配置文件传输
  5. Hadoop生态圈-Hive的自定义函数之UDF(User-Defined-Function)
  6. 为什么我们仍然坚持用C++做游戏服务器
  7. 配置Oracle Instant Client环境
  8. CUDA:在GPU上实现核函数的嵌套以及编译运行
  9. python敏感词过滤replace_Serverless 实战:3 分钟实现文本敏感词过滤
  10. 在框架中用JS设置target(用于location.href)
  11. 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第4节 方法引用_2_方法引用_通过对象名引用成员方法...
  12. 计算机校园网网络系统设计方案,计算机网络课程设计-XX大学校园网网络设计方案.doc...
  13. 区块链(BTC)学习总结1
  14. 处理器后面的字母含义_CPU后面的数字和字母都是什么意思?全面解答。
  15. Edge、Chrome自定义新标签页网址
  16. gvim常用命令行大全
  17. SRM- Golink体验报告
  18. 人口统计、红利、康波
  19. 从零开始学架构——架构基础
  20. 分布式数据库CAP原理

热门文章

  1. POJ 2375 Cow Ski Area 增加最小边使图强连通
  2. wildfly安装及基本使用
  3. C语言小新意-破壳日
  4. 发票识别100%智能
  5. 我热爱计算机作文450字,我的兴趣爱好作文450字精选5篇
  6. [转载]永恒的经典——冰封十大经典战役寄语
  7. 目标管理的S.M.A.R.T.理念
  8. 读书笔记(四)《奇特的一生》格拉宁
  9. 免费午餐时代的结束 - Docker Hub 新的服务条款
  10. MPI矩阵向量乘法代码《并行程序设计导论》