Python替换文件内容(文件处理)

#需求

用Python来替换掉文件里面的内容

#脚本内容如下

#!/usr/bin/env python  #_*_ coding:utf-8 _*_  import sys,os    #小于四个位置变量则退出脚本  if len(sys.argv) <4:      print "useage: ./file_replace.py old_text new_text filename"      sys.exit()        #设置三个位置变量  old_text,new_text = sys.argv[1],sys.argv[2]  file_name = sys.argv[3]    #设置原文件可读,新文件可写  f = file(file_name,'rb')  new_file = file('.%s.bak' % file_name,'wb')    #把替换内容写入新文件  for line in f.xreadlines():      new_file.write(line.replace(old_text,new_text))     #关闭文件     f.close()  new_file.close()    #--bak判断用户需不需要先备份再修改文件  if '--bak' in sys.argv:        #加上--bak就备份原文件      os.rename(file_name, '%s.bak' %file_name)   #原文件备份为xx.bak      os.rename('.%s.bak' %file_name , file_name) #替换的新文件改为xx        else:        #不加--bak替换后的新文件直接复盖原文件      os.rename('.%s.bak' %file_name , file_name)

#查看要替换的文件

[root@localhost opt]# cat passwd   ntp:x:38:38::/etc/ntp:/sbin/nologin  mysql:x:27:27:MySQL Server:/var/lib/mysql:/bin/bash  wsyht:x:500:500::/home/wsyht:/bin/bash

#执行脚本不备份原有文件

[root@localhost opt]# python replace.py : ! passwd  [root@localhost opt]# cat passwd  qemu!x!107!107!qemu user!/!/sbin/nologin  radvd!x!75!75!radvd user!/!/sbin/nologin  wsyht!x!500!500!!/home/wsyht!/bin/bash

#执行脚本备份原有文件

[root@localhost opt]# python replace.py ! : passwd --bak    [root@localhost opt]# cat passwd  qemu:x:107:107:qemu user:/:/sbin/nologin  radvd:x:75:75:radvd user:/:/sbin/nologin  wsyht:x:500:500::/home/wsyht:/bin/bash  [root@localhost opt]# cat passwd.bak   qemu!x!107!107!qemu user!/!/sbin/nologin  radvd!x!75!75!radvd user!/!/sbin/nologin  wsyht!x!500!500!!/home/wsyht!/bin/bash