python 使用ConfigParser修改文件时保留注释行以及制表符的办法

def Repla_list_Notes(File,Old_list,New_list): #定义修改 # 号的函数,这么做的目的是为了使在使用ConfigParser的set时不把注释行去掉

    fopen=open(File,'r')

    w_str=""

    for line in fopen:

        if re.search(Old_list,line):

            line=re.sub(Old_list,str(random.random())+New_list,line)  #str(random.random()):随机的0-1的小数并转换为字符串

            w_str+=line

        else:

            w_str+=line

    wopen=open(File,'w')

    wopen.write(w_str)

    fopen.close()

    wopen.close()

    return

 

def Repla_list_Notes1(File,Old_list,New_list):  #定义将 # 号修改回来的函数

    fopen=open(File,'r')

    w_str=""

    for line in fopen:

        if re.search(Old_list,line):

            line=re.sub(Old_list,New_list,line)

            w_str+=line

        else:

            w_str+=line

    wopen=open(File,'w')

    wopen.write(w_str)

    fopen.close()

    wopen.close()

    return

#######################################################################

with open(smbfile, 'r+') as file_insert_1:
    content = file_insert_1.read()
    file_insert_1.seek(0, 0)
    file_insert_1.write('[aba1注释1aba]\n'+content) #这一段就是在文件的第一行插入 [aba1注释1aba] 

Repla_list_Notes(smbfile,'^#',"aba1注释1aba = ") #将文件中 # 号 修改为 随机数aba1注释1aba = ,这么做的目的是为了使在使用ConfigParser的set时不把注释行去掉
############################            
cfgParser1 = ConfigParser()
cfgParser1.read(smbfile)  #读取配置文件,直接读取ini文件内容 
PathJur_r = (cfgParser1.get(MountDir_name, "valid users")) #获取变量 MountDir_name 中"valid users" 的值,返回为string类型

List_PathJur_r=PathJur_r.strip(',').split(',') #将PathJur_r 以 , 为分隔转换为列表
if Share_User not in List_PathJur_r:  
    cfgParser1.set(MountDir_name,'valid users',PathJur_r+','+Share_User)  #修改 valid users 的值为 PathJur+','+ddd
    cfgParser1.write(open(smbfile,"w"))  #将修改写入 smbfile 中
    print ('已增加',Share_User,'用户对共享',MountDir_name,'的读权限')

######################################
for line in fileinput.input(smbfile, inplace=1):
    if not fileinput.isfirstline():
        print(line.replace('\n',''))   #这一段的意思是删除上面添加的第一行

Repla_list_Notes1(smbfile,'^.*aba1注释1aba = ','#')  #将上面修改的注释符号修改回来

 

#:制表符也可以使用 修改注释行同样的方法。

你可能感兴趣的:(python,python,ConfigParser)