设为首页 收藏本站
查看: 1372|回复: 0

[经验分享] Python获取JE用户头像 代码优化

[复制链接]

尚未签到

发表于 2017-5-4 10:33:11 | 显示全部楼层 |阅读模式
  发现昨天写的获取用户头像的代码效率有点低,于是今天重新设计了一下。
  上代码:

    def getLogo(self, path=None, user=None, remote=False, localForld=APP_LOCAL_LOGO_FORLD_PATH):
'''获取用户头像(此方法会将头像保存至本地,下次获取将获取本地图像)
@param path:用户头像路径(服务器路径)
@param user:用户
@param remote: 是否从远程读取
@param localForld: 本地存储路径 默认:config.APP_LOCAL_LOGO_FORLD_PATH
@see: config.APP_LOCAL_LOGO_FORLD_PATH
@return: 存储在本地的路径(str)
'''
if not path and not user:
return None
if not path and "logo" in user:
path = user["logo"]
localpath = self.getLocalLogoPath(path, localForld)
if os.path.exists(localpath) and not remote:
print "logo has exists in local!"
return localpath
request = Request(JE_URL + path)
f = sendRequest(request)
return self.saveLogo(path, f["data"], localForld)
def saveLogo(self, path, data, localForld=APP_LOCAL_LOGO_FORLD_PATH):
'''将头像保存至本地,生成本地序列号(文件名)
@param path:服务器上的路径
@param data:从服务器获取到的头像数据
@param localForld:本地文件夹路径
'''
localPath = self.getLocalLogoPath(path, localForld)
if not os.path.exists(localPath) and makeDir(os.path.dirname(localPath)):
f = open(localPath, "w")
try:
f.write(data)
return localPath
finally:
if f:f.close()
def getLocalLogoPath(self, path, localForld=APP_LOCAL_LOGO_FORLD_PATH):
'''获取服务器logo映射到本地logo的路径
@param path:服务器路径
@param localForld:本地存放logo文件夹
'''
if path[0] == '/':
path = path[1:]
return os.path.join(localForld, path)
  去掉了流水号作为文件名的机制,采用 服务器路径->本地路径 的直接转换,比如服务器路径为  /upload/xxx/xx/22.jpg,则本地路径就是/home/xx/upload/xxx/xx/22.jpg。其中用到的一个额外的函数(makeDir),是自己写的一个递归创建目录的方法。方法代码如下:

def makeDir(path):
'''创建目录,如果父目录不存在则递归创建父目录
@param path: 目录全路径
'''
if os.path.exists(path):
return True
parentDir = os.path.dirname(path)#获取父目录
if not os.path.exists(parentDir):
makeDir(parentDir)#如果父目录不存在,就先创建父目录
os.mkdir(path)
return True
  这样就节省了生成流水号,保存流水号和计算流水号带来的一些效率上的损失。
  -------------------------------
  有时候有些事情想得太复杂了。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-372893-1-1.html 上篇帖子: 不学python,改学c 下篇帖子: python中的链表推导式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表