534242 发表于 2016-7-5 09:01:59

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

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

#脚本内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/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,sys.argv
file_name = sys.argv

#设置原文件可读,新文件可写
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)





#查看要替换的文件

1
2
3
4
# 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





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

1
2
3
4
5
# python replace.py : ! passwd
# 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





#执行脚本备份原有文件

1
2
3
4
5
6
7
8
9
# python replace.py ! : passwd --bak
# 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
# 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






页: [1]
查看完整版本: Python替换文件内容(文件处理)