手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜Qcloud , 注册 | 登陆

fabric 修改远程文件

首页 > python >

其实对python真是一点都不熟,在用Fabric的时候,想修改远程服务器的文件,直接用open -> write 。却发现,修改的只能是本地文件,即使用with cd() : 进入目录,再调用 open ->write,也没用。

后来用了一个比较恶心的办法,适合修改小文件:

Python代码
  1. def modify(filename, searched, replaced):  
  2.     tmpfile = '/tmp/remote_temp.%s.txt' % os.getpid()  
  3.     get(filename,tmpfile)  
  4.     try:  
  5.         lines = open(tmpfile, 'r').readlines()  
  6.         flen = len(lines) - 1  
  7.         for i in range(flen):  
  8.             if searched in lines[i]:  
  9.                 lines[i] = lines[i].replace(searched, replaced)  
  10.         open(tmpfile, 'w').writelines(lines)  
  11.     except Exception, e:  
  12.         print e  
  13.     put(tmpfile,filename);  
  14.     os.remove(tmpfile)  

代码写的烂,但能用了!这里的get/put是fabric的一些方法。即:先下载下来,修改好后再put上去!

乱七八槽 的一些函数还有这些:

Python代码
  1. def modify2(filename, searched, replaced):  
  2.     tmpfile = '/tmp/remote_temp.%s.txt' % os.getpid()  
  3.     get(filename,tmpfile)  
  4.     try:  
  5.         lines = open(tmpfile, 'r').readlines()  
  6.         flen = len(lines) - 1  
  7.         for i in range(flen):  
  8.             for j in range(len(searched)):  
  9.                 if searched[j] in lines[i]:  
  10.                     lines[i] = lines[i].replace(searched[j], replaced[j])  
  11.         open(tmpfile, 'w').writelines(lines)  
  12.     except Exception, e:  
  13.         print e  
  14.     put(tmpfile,filename);  
  15.     os.remove(tmpfile)  
  16.   
  17. def modifyReg(filename, searched, replaced):  
  18.     tmpfile = '/tmp/remote_temp.%s.txt' % os.getpid()  
  19.     get(filename,tmpfile)  
  20.     try:  
  21.         lines = open(tmpfile, 'r').readlines()  
  22.         flen = len(lines) - 1  
  23.         for i in range(flen):  
  24.             lines[i], v = re.subn(searched, replaced, lines[i])  
  25.         open(tmpfile, 'w').writelines(lines)  
  26.     except Exception, e:  
  27.         print e  
  28.     put(tmpfile,filename);  
  29.     os.remove(tmpfile)  

纯记录。实在不知道怎么写好(其实也是不会写)




本站采用创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"膘叔", 保留原始链接, 此外还必须标注原文标题和链接.

« 上一篇 | 下一篇 »

发表评论

评论内容 (必填):