公司一個項目需要上傳圖片,一開始同事將圖片上傳後結合當前主機拼成了一個絕對的URL(http://192.168.1.1:888/m/getimg?filename=xxx.jpg由於同時給手機終端提供介面,在手機終端會引起一些bug,改完代碼後要求將以前的uri替換成相對的URL(/m/getimg?filename=xxx.jpg),由於圖片是用img標籤嵌入到內容同時用a標籤括起顯示大圖的,所以需要讀取資料庫並對內容進行替換,
指令碼內容如下:
#!/usr/bin/env python#-*- coding:utf-8 -*-### author : cold night# email : wh_linux@126.com#import pymongoimport refrom StringIO import StringIOconn = pymongo.Connection()db = conn.testdef replace_url(): regex = re.compile(r'([href|src])=["|\']http://.*?(/m/getimg\?.*?)["|\']') results = db['test'].find() db_coll = db['test'] def replace(r): content = r.get('content') if not content: return content = StringIO(content) content.seek(0) result = StringIO() for line in content.readlines(): t = regex.sub(r'\1="\2"', line) result.write(t) result.seek(0) content = result.read() if content: r['content'] = content _id = r.get('_id') db_coll.update({'_id':_id}, r) results = [replace(i) for i in results]if __name__=="__main__":replace_url()