使用Python脚本将绝对url替换为相对url的教程
公司一个项目需要上传图片,一开始同事将图片上传后结合当前主机拼成了一个绝对的URL(http://192.168.1.1:888/m/getimg?filename=xxx.jpg由于同时给手机终端提供接口,在手机终端会引起一些bug,改完代码后要求将以前的uri替换成相对的URL(/m/getimg?filename=xxx.jpg),由于图片是用img标签嵌入到内容同时用a标签括起显示大图的,所以需要读取数据库并对内容进行替换,
脚本内容如下:
#!/usr/bin/envpython #-*-coding:utf-8-*- # # #author:coldnight #email:wh_linux@126.com # importpymongo importre fromStringIOimportStringIO conn=pymongo.Connection() db=conn.test defreplace_url(): regex=re.compile(r'([href|src])=["|\']http://.*?(/m/getimg\?.*?)["|\']') results=db['test'].find() db_coll=db['test'] defreplace(r): content=r.get('content') ifnotcontent:return content=StringIO(content) content.seek(0) result=StringIO() forlineincontent.readlines(): t=regex.sub(r'\1="\2"',line) result.write(t) result.seek(0) content=result.read() ifcontent: r['content']=content _id=r.get('_id') db_coll.update({'_id':_id},r) results=[replace(i)foriinresults] if__name__=="__main__":replace_url()