python 小程序,替换文件中的字符串

时间:2023-03-09 18:18:32
python 小程序,替换文件中的字符串
 [root@PythonPC ~]# cat passwd
 root:x:::root:/root:/bin/bash
 bin:x:::bin:/bin:/sbin/nologin
 daemon:x:::daemon:/sbin:/sbin/nologin
 adm:x:::adm:/var/adm:/sbin/nologin
 ::lp:/var/spool/lpd:/sbin/nologin
 ::sync:/sbin:/bin/sync
 shutdown:x:::shutdown:/sbin:/sbin/shutdown
 halt:x:::halt:/sbin:/sbin/halt
 [root@PythonPC ~]#
 [root@PythonPC ~]# python .py
 [root@PythonPC ~]#
 [root@PythonPC ~]# cat passwd
 root:x:::root:/root:/bin/bash
 bin:x:::bin:/bin:/sbin/nologin
 daemon:x:::daemon:/sbin:/sbin/nologin
 adm:x:::adm:/var/adm:/sbin/nologin
 ::lp:/var/spool/lpd:/sbin/nologin
 ::sync:/sbin:/bin/sync
 shutdown:x:::shutdown:/sbin:/sbin/shutdown
 halt:x:::halt:/sbin:/sbin/halt
 [root@PythonPC ~]#
 [root@PythonPC ~]# python .py   passwd.new
 [root@PythonPC ~]#
 [root@PythonPC ~]# cat passwd
 root:x:::root:/root:/bin/bash
 bin:x:::bin:/bin:/sbin/nologin
 daemon:x:::daemon:/sbin:/sbin/nologin
 adm:x:::adm:/var/adm:/sbin/nologin
 ::lp:/var/spool/lpd:/sbin/nologin
 ::sync:/sbin:/bin/sync
 shutdown:x:::shutdown:/sbin:/sbin/shutdown
 halt:x:::halt:/sbin:/sbin/halt
 [root@PythonPC ~]#
 [root@PythonPC ~]# cat passwd.new
 root:x:::root:/root:/bin/bash
 bin:x:::bin:/bin:/sbin/nologin
 daemon:x:::daemon:/sbin:/sbin/nologin
 adm:x:::adm:/var/adm:/sbin/nologin
 ::lp:/var/spool/lpd:/sbin/nologin
 ::sync:/sbin:/bin/sync
 shutdown:x:::shutdown:/sbin:/sbin/shutdown
 halt:x:::halt:/sbin:/sbin/halt
 [root@PythonPC ~]#
 [root@PythonPC ~]# python .py passwd o
 参数错误:python .py 需要编辑的文件 被替换的字符串 提成成的字符串 [另存成的文件]
 [root@PythonPC ~]# python .py passw
 文件不存在
 [root@PythonPC ~]# 

脚本代码如下:

 #!/usr/bin/python
 # -*- coding=UTF-8 -*-

 import sys
 import os

 len_argv=len(sys.argv)
 #print '传参数量',len_argv-1

 if   len_argv <  4:
     print '参数错误:python '+sys.argv[0]+' 需要编辑的文件 被替换的字符串 提成成的字符串 [另存成的文件]'

 elif len_argv >  5:
     print '参数错误:python '+sys.argv[0]+' 需要编辑的文件 被替换的字符串 提成成的字符串 [另存成的文件]'

 else:
     if not os.path.isfile(sys.argv[1]):
         print '文件不存在'
         sys.exit()
     s_file  = file(sys.argv[1],'r+')
     old_str = sys.argv[2]
     new_str = sys.argv[3]
     d_file  = file(sys.argv[1]+'.tmp','w')
     for line in s_file.readlines():
         d_file.writelines(line.replace(old_str,new_str))
     s_file.close()
     d_file.close()

     if len_argv == 4:
         os.rename(sys.argv[1]+'.tmp',sys.argv[1])
     else:
         os.rename(sys.argv[1]+'.tmp',sys.argv[4])

相关文章