#!usr/bin/python #-*-coding:utf-8-*- #根据git变化,将变化的文件推送到手机上 import os import sys print("文件编码格式:"+ sys.getdefaultencoding()) ###############配置变量############### # 手机项目存储目录 prefix="storage/emulated/0/sdcard/project/" projectName="XXXX" # 忽略文件,不向手机发送的文件 gnoreFile=[ "README.md", "compile.py", "change.txt", "tmp.txt", "complate.txt", "verifycode.txt", ] ############系统变量####### changeFile="change.txt" #记录变化的文件 tmpFile="tmp.txt"#临时文件 ########################## #上传文件到手机 def uploadPhoneFile(change): print("sync {} to {}".format(change,prefix+projectName+"/"+change)) pushCode ="adb push {} {}".format(change, prefix+projectName+"/"+change) os.system(pushCode) #创建文件夹到手机 def mkdirPhoneFile(change): print("sync {} to {}".format(change,prefix+projectName+"/"+change)) pushCode ="adb shell mkdir -p {}".format(prefix+projectName+"/"+change) os.system(pushCode) #删除手机上的文件 def delletePhoneFile(change): print("delete {}".format(prefix+projectName+"/"+change)) delCode ="adb shell rm {}".format(prefix+projectName+"/"+change) os.system(delCode) #删除手机上的文件夹 def delletePhoneFileDir(change): print("delete {}".format(prefix+projectName+"/"+change)) delCode ="adb shell rm -r {}".format(prefix+projectName+"/"+change) os.system(delCode) #清空文件 def clearFile(name): open(name, 'w').close() #获取git变化并写入到文件 def diffGit(): diffGit = 'git status --short' diff = os.popen(diffGit,'r') diffStrs = diff.buffer.readlines() clearFile(tmpFile) ft = open(tmpFile,"a+",encoding='utf8') for c in diffStrs: change = c.decode(encoding='utf8').replace("\n", "") if "../" not in change: if len(change) > 0: ft.write(change+"\n") changes = change.split() if len(changes) ==2 : changeStr = changes[1] if changeStr not in gnoreFile: print(change.split()[0]+"---"+change) if changes[0] == "M" or changes[0] == "??": print("新增或修改文件:"+changeStr) if os.path.isdir(changeStr): mkdirPhoneFile(changeStr) for root, dirs, files in os.walk(changeStr): for f in files: print(changeStr+f) ft.write(changes[0]+" "+changeStr+f+"\n") uploadPhoneFile(changeStr+f) else: uploadPhoneFile(changeStr) elif changes[0] == "D" : print("删除文件:"+changeStr) delletePhoneFile(changeStr) ft.close() #对比上次同步结果 def writeChangeContent(): fch = open(changeFile,"r",encoding='utf8') ftm = open(tmpFile,"r",encoding='utf8') fclines = ftm.readlines() for change in fch.readlines(): if change not in fclines: print("-------上次变化,这次没有变化--------{}".format(change)) changes = change.split() changeStr = changes[1] if changes[0] == "M": uploadPhoneFile(changeStr) elif changes[0] == "??": delletePhoneFileDir(changeStr) elif changes[0] == "D" : uploadPhoneFile(changeStr) fch.close() ftm.close() #将这次结果放到变化文件 def copyStrToFile(): file1 = open(tmpFile,"r",encoding='utf8') file2 = open(changeFile,"w",encoding='utf8') s = file1.read() w = file2.write(s) file1.close() file2.close() diffGit() writeChangeContent() copyStrToFile() #os.system("adb pull /storage/emulated/0/sdcard/XXX_tmp/")
原文地址:http://www.cnblogs.com/lambertwe/p/16917622.html
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,请务用于商业用途!
3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员!
8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载
声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性