在工作应用中,运维自动化的基础是标准化。

而标准化的工作,是难点,在公司相关部门的配合。

那么,在有标准化之后,相应的部署脚本,就比较好写了。

贡献一个在类似环境下可以运用的东东。。

当然,可以写得更好点,只是时间不够。。

#!/usr/bin/python
# -*- coding:utf-8 -*-

import sys,os

#定义需要替换IP的所有文件列表,运用环境下一定要弄清楚,要不然会导致不能正常运行。如果所有环境都定义好,则此脚本通用性更强

repip_file_list = ["D1_file", \
                   "D2_file", \
                   "D3_file", \
                   "D4_file", \
                   "D5_file"]

#将模板的IP和新环境的IP集成字典,方便替换,且封装性好点

ip_dict = {"old_c_ip" : "1.1.1.1", \
               "new_c_ip" : "2.2.2.2", \
               "old_f_ip" : "1.1.1.3", \
               "new_f_ip" : "2.2.2.3", \
               "old_k_ip" : "1.1.1.4", \
               "new_k_ip" : "2.2.2.4", \
               "old_o_ip" : "1.1.1.5",\
               "new_o_ip" : "2.2.2.5", \
               "old_s_ip" : "1.1.1.6", \
               "new_s_ip" : "2.2.2.6"}

#把指定文件的内容替换的函数,多个环境参数并行替换,这样就可以一个脚本,多个通用。
def repip_func(file_path, ip_dict):

  f = open(file_path,'r+')
  all_the_lines = f.readlines()
  f.seek(0)
  f.truncate()
  for line in all_the_lines:
    line = line.replace(ip_dict['old_c_ip'],ip_dict['new_c_ip'])
    line = line.replace(ip_dict['old_t_ip'],ip_dict['new_t_ip'])
    line = line.replace(ip_dict['old_s_ip'],ip_dict['new_s_ip'])
    line = line.replace(ip_dict['old_f_ip'],ip_dict['new_f_ip'])
    line = line.replace(ip_dict['old_k_ip'],ip_dict['new_k_ip'])

    f.write(line)
  f.close()

  print "%s have replace ip %s" % (file_path, ip_dict)

def main():
  for file_path in repip_file_list:
    repip_func(file_path, ip_dict)

if __name__ == "__main__":
  main()

PYTHON之批量文件指定字符串替换的更多相关文章

  1. linux 批量文件查找并替换

    linux 批量文件查找并替换 sed -i "s/oldstring/newstring/g" `grep oldstring -rl path` 如: sed -i " ...

  2. python文件操作--字符串替换

    如把test.txt文件的 所有 AAA 字符串 替换成 aaaaa with open('test.txt','+r') as f: t = f.read() t = d.replace('AAA' ...

  3. python工具 - 批量文件重命名

    日常工作中经常会遇到这样的情况,需要将某个文件夹下的文件按着一定的规则进行重命名,当文件数量及其庞大的时候手工一个一个的去修需要耗费大量的时间,以下python工具可以协助批量修改文件名. 场景:某文 ...

  4. python实现批量文件重命名

    本文实例为大家分享了python批量文件重命名的具体代码,供大家参考,具体内容如下 问题描述 最近遇到朋友求助,如何将大量文件名前面的某些字符删除. 即将图中文件前的编号删除. Python实现 用到 ...

  5. VIM批量文件查找和替换

    使用vim时间不长,linux命令行下常用的文本编辑工具,所以需要掌握一些基本的用法.很多不会的不是百度就谷歌,总有你想要的答案. 1. 批量文件查找内容 vimgrep 比如在当前目录下查找带有“a ...

  6. 【Python】批量修改指定目录下所有文件的文件名/后缀

    [删除.txt文件的后缀] import os, shutil #rootdir = input("请输入文件路径(结尾加上/):") #fileList = os.listdir ...

  7. python提取批量文件内的指定内容

    目标文件夹: 文件内容: 实现代码: # -*- coding:utf-8 -*- # __author__ :kusy # __content__:get ssr info from html fi ...

  8. linux替换文件指定字符串前面的内容

    sed 's/.*user_id/user_id/' wechat_log2 > target_log

  9. python,批量生成指定格式的审核数据(传输参数格式为数组时)

    #思路#获取list长度(例如列表有20条数据,则生成20条数据),生成数组长度为list元素的数据,完成对列表20条数据的批量审核def createBatchData(self,str_in,li ...

随机推荐

  1. Python异常处理 分类: python Raspberry Pi 服务器搭建 2015-04-01 13:22 172人阅读 评论(0) 收藏

    一个程序要保持稳定运行必须要有异常处理,本文将简单介绍Python中的try-except..异常处理语句的使用. 该种异常处理语法的规则是: 执行try下的语句,如果引发异常,则执行过程会跳到第一个 ...

  2. eclipse下maven插件的安装

    最近公司项目要求使用maven来进行项目的管理开发,在这里记录一下eclipse下maven插件的安装. maven插件在eclipse下安装害得我挺恼火的. 我想用最简单的那种方式--在线安装: 通 ...

  3. Qt之XML(一) DOM

      Qt之XML(一) 文档名称 Qt之XML 创建时间 2012-10-10 修改时间 2012-10-10 创建人 Baifx 简介(收获) 最近开始使用QtXml,学习了一番,写了几个小测试程序 ...

  4. xslt语法之---If Else

    大家都知道,XSL中是没有if else的,那么要想实现if else该怎么办呢? 其实很简单 <xsl:choose> <xsl:when test="position( ...

  5. Java中ArrayList问题:删除一个ArrayList中的重复元素,注意留意一个问题

    该问题有两种方法: 一 利用两个数组,此法简单,不讨论 二 利用一个数组,从第0个开始依次取元素,并在其后元素中查找是否有该元素,有则删掉后面的重复元素,依次遍历.---但是这种情况要特别注意,当后续 ...

  6. ArcEngine:栅格分级渲染

    ArcEngine对矢量数据进行风格化实在是得心应手,同样的对于栅格图像也能进行风格化!以前没接触过,今天正好需要,做出了栅格图像的渲染!下面实现的思路: 1.定义渲染的一系列接口 2.判断图像是否建 ...

  7. PHP 解决未定义变量报错

    在PHP中 有时候会出现 Notice: Undefined index: sid in D:\Apache Group\Apache2\htdocs\php_mobile\mobile\chao\s ...

  8. mvc4+jquerymobile页面加载时无法绑定事件

    问题:在view里写js,在页面第一次加载完成后,无法触发事件, 如:按钮click事件,已经在$(function(){  添加了click });但就是无法触发,必须刷新下才可以. 原因分析: 主 ...

  9. What and where are the stack and heap?

    The stack is the memory set aside as scratch space for a thread of execution. When a function is cal ...

  10. (JAVA)从零开始之--对象输入输出流ObjectInputStream、ObjectOutputStream(对象序列化与反序列化)

    对象的输入输出流 : 主要的作用是用于写入对象信息与读取对象信息. 对象信息一旦写到文件上那么对象的信息就可以做到持久化了 对象的输出流: ObjectOutputStream 对象的输入流:  Ob ...