工作中需要切换程序运行环境,于是要改配置文件内容,便想到了用脚本实现,便于切换。刚开始用vbs写的,废了老大劲还没做出来,同事说python更好用点,一直也想学习下python,正好这是一次机会。
整个脚本需要做的事是在文件中查到需要改的语句后替换为另一语句,还需通过关键字找到一行,把接下来的几行都注释掉。下面为我实现的python脚本。
例如文件名为example.txt,放在D盘下。文件内容如下:
girl
boy
key words
12
start notes
1abc
2abc
end notes
kdjska
通过脚本运行后希望example.txt内容变成
girl
boy
<!—key words-->
12
<!—start notes-->
<!—1abc-->
<!—2abc-->
<!-end notes-->
kdjska
在example.txt文件中start notes为第二个一个关键字,找到后注释并注释后面的3行。
python代码如下:
import os
#os 模块提供了一个统一的操作系统接口函数,这些函数通常是平台指定的,os
#模块能在不同操作系统平台中的特定函数间自动切换,从而实现跨平台操作
f=open(r"D:\example.txt","r+")
#字符串前面的r说明在字符串中的“\”不是转义字符,代表斜杠本身,r+以读#写模式打开文件
d = f.read()
#把文件内容按原样全部读到字符串d中
if d.find("key words")>=0:
#找到关键字
d = d.replace("key words", "<!—key words-->")
f.truncate(0)
#把文件内容清空
f.seek(0)
#文件指针指向文件头
f.write(d)
f.close()
n1=4
m=0
memoryFile = [] #get these file content
fp=open(r"D:\example.txt","r+")
for line in fp.readlines(): #line break by default
if(line.find("start notes")>=0 or n1!=4): #find
line = line.lstrip("\t ")
#去除每行行首空格
line = "<!--" + line[:-1] + "-->\n"
#去除每行回车键加“-->”,再还原回车键
memoryFile.append(line)
m=m+1
if m!=4:
n2=0
else:
n2=4
continue
memoryFile.append(line)
fp.close()
os.remove(r"D:\example.txt")
newfiles=open(r" D:\example.txt ",'w')
for line in memoryFile:
newfiles.write(line)
newfiles.close()
请注意,在python中注释尽量用英文,如果非得用中文请在首行声明编码#codeing=utf-8。如果有比较复杂的关键字,可以用python的正则表达式很简单。还有当我们需要替换文件夹下所有目录中文件关键字时用python也很方便。