python处理多行文件内容

来源:互联网 发布:财务金融知乎 编辑:程序博客网 时间:2024/05/01 02:11

工作中需要切换程序运行环境,于是要改配置文件内容,便想到了用脚本实现,便于切换。刚开始用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=4m=0memoryFile = [] #get these file contentfp=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也很方便。

0 0
原创粉丝点击