需求:
由于公司项目须要作SEO优化,因此对项目中的各类长链接作优化,好比本文中提到的精简路径;以前已经批量吧文本的路径名字等作过修改,这里再也不赘述;这里的问题是外部的路径修改了,文本里调用到这些路径也须要替换,这就是本文要作的。html
思路:
1>肯定须要替换的全部文件路径;
2>确认全部须要替换的区域(这次工做特殊的地方,也下降了难度);
3>拿到要替换的字符串用用来替换的字符串,迭代替换就完成了。python
实现:
先从数据库找到这批文件,其中作各类SQL统计,或者SQL字符串处理获得以下结果sql
url、www_url是本次因为路径改动须要在文本中替换的字符串;
x是须要改动的文本路径。shell
文本里的内容部分截图以下:
(1)根据数据库能够获取须要修改文本的路径;
(2)根据数据库能够获取用来替换的字符串;
(3)用python打开文本;
(4)获取要替换的内容的坐标(x,y),进而取出须要替换的字符串;
(5)而后用python调用shell脚本:sed -i "s/source/tagert/g" path。
下边是具体实现脚本附上:数据库
#!python # -*- coding: UTF-8 -*- import MySQLdb import os dbip = "192.168.0.1" dbuser = "root" dbpwd = r"123" dbdata = "zt" # 打开数据库链接 db = MySQLdb.connect(dbip,dbuser,dbpwd,dbdata ) # 使用cursor()方法获取操做游标 cursor = db.cursor() try: # 执行sql语句 sqls="SELECT id,uri,www_uri,x from t_ztzsq1019;" cursor.execute(sqls) results = cursor.fetchall() except: print("读取失败") # 关闭数据库链接 db.close() for row in results: id = row[0] uri = row[1] www_uri = row[2] www_uri_path = row[3] #url: "/content/3nsm181018/35324.html" uri = 'url: \\"' + uri + '\\"' uri = uri.replace('/', '\/') #wwwUrl: "/content/3nswww181018/35325.html" www_uri = 'wwwUrl: \\"' + www_uri + '\\"' www_uri = www_uri.replace('/', '\/') # 打开文件 fo = open(www_uri_path, mode='r+') # 读取所有数据 p = fo.read() # 判断起始点 source_top = p.find('var _detailsVar') print(source_top) # url起始 print(p.find('url', source_top)) url_top = p.find('url', source_top) # url结束 print(p.find(',', url_top)) url_end = p.find(',', url_top) # url结果 print(p[url_top:url_end]) url_source = p[url_top:url_end] # wwwUrl起始 print(p.find('wwwUrl', source_top)) wwwUrl_top = p.find('wwwUrl', source_top) print(p.find(',', wwwUrl_top)) wwwUrl_end = p.find(',', wwwUrl_top) print(p[wwwUrl_top:wwwUrl_end]) wwwUrl_source = p[wwwUrl_top:wwwUrl_end] fo.close() url_source = url_source.replace('"', '\\"') url_source = url_source.replace('/', '\/') wwwUrl_source = wwwUrl_source.replace('"', '\\"') wwwUrl_source = wwwUrl_source.replace('/', '\/') www_main = 'sed -i "s/' + url_source + '/' + uri + '/g" ' + www_uri_path wwwUrl_main = 'sed -i "s/' + wwwUrl_source + '/' + www_uri + '/g" ' + www_uri_path print(www_main) print(wwwUrl_main) #os.system(www_main) #os.system(wwwUrl_main)