1 [root@PythonPC ~]# cat passwd 2 root:x:0:0:root:/root:/bin/bash 3 bin:x:1:1:bin:/bin:/sbin/nologin 4 daemon:x:2:2:daemon:/sbin:/sbin/nologin 5 adm:x:3:4:adm:/var/adm:/sbin/nologin 6 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 7 sync:x:5:0:sync:/sbin:/bin/sync 8 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 9 halt:x:7:0:halt:/sbin:/sbin/halt 10 [root@PythonPC ~]# 11 [root@PythonPC ~]# python 5.py passwd 0 1 12 [root@PythonPC ~]# 13 [root@PythonPC ~]# cat passwd 14 root:x:1:1:root:/root:/bin/bash 15 bin:x:1:1:bin:/bin:/sbin/nologin 16 daemon:x:2:2:daemon:/sbin:/sbin/nologin 17 adm:x:3:4:adm:/var/adm:/sbin/nologin 18 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 19 sync:x:5:1:sync:/sbin:/bin/sync 20 shutdown:x:6:1:shutdown:/sbin:/sbin/shutdown 21 halt:x:7:1:halt:/sbin:/sbin/halt 22 [root@PythonPC ~]# 23 [root@PythonPC ~]# python 5.py passwd 1 2 passwd.new 24 [root@PythonPC ~]# 25 [root@PythonPC ~]# cat passwd 26 root:x:1:1:root:/root:/bin/bash 27 bin:x:1:1:bin:/bin:/sbin/nologin 28 daemon:x:2:2:daemon:/sbin:/sbin/nologin 29 adm:x:3:4:adm:/var/adm:/sbin/nologin 30 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 31 sync:x:5:1:sync:/sbin:/bin/sync 32 shutdown:x:6:1:shutdown:/sbin:/sbin/shutdown 33 halt:x:7:1:halt:/sbin:/sbin/halt 34 [root@PythonPC ~]# 35 [root@PythonPC ~]# cat passwd.new 36 root:x:2:2:root:/root:/bin/bash 37 bin:x:2:2:bin:/bin:/sbin/nologin 38 daemon:x:2:2:daemon:/sbin:/sbin/nologin 39 adm:x:3:4:adm:/var/adm:/sbin/nologin 40 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin 41 sync:x:5:2:sync:/sbin:/bin/sync 42 shutdown:x:6:2:shutdown:/sbin:/sbin/shutdown 43 halt:x:7:2:halt:/sbin:/sbin/halt 44 [root@PythonPC ~]# 45 [root@PythonPC ~]# python 5.py passwd o 46 引數錯誤:python 5.py 需要編輯的檔案 被替換的字串 提成成的字串 [另存成的檔案] 47 [root@PythonPC ~]# python 5.py passw 1 2 48 檔案不存在 49 [root@PythonPC ~]#
指令碼程式碼如下:
1 #!/usr/bin/python 2 # -*- coding=UTF-8 -*- 3 4 import sys 5 import os 6 7 len_argv=len(sys.argv) 8 #print '傳引數量',len_argv-1 9 10 if len_argv < 4: 11 print '引數錯誤:python '+sys.argv[0]+' 需要編輯的檔案 被替換的字串 提成成的字串 [另存成的檔案]' 12 13 elif len_argv > 5: 14 print '引數錯誤:python '+sys.argv[0]+' 需要編輯的檔案 被替換的字串 提成成的字串 [另存成的檔案]' 15 16 else: 17 if not os.path.isfile(sys.argv[1]): 18 print '檔案不存在' 19 sys.exit() 20 s_file = file(sys.argv[1],'r+') 21 old_str = sys.argv[2] 22 new_str = sys.argv[3] 23 d_file = file(sys.argv[1]+'.tmp','w') 24 for line in s_file.readlines(): 25 d_file.writelines(line.replace(old_str,new_str)) 26 s_file.close() 27 d_file.close() 28 29 if len_argv == 4: 30 os.rename(sys.argv[1]+'.tmp',sys.argv[1]) 31 else: 32 os.rename(sys.argv[1]+'.tmp',sys.argv[4])