我正在编写一个带有.ldif和两个字符串的python命令行脚本。字符串对应于我需要在.ldif文件中的每个记录的末尾插入的键和值。但是,我有一个问题,想弄清楚如何解析.ldif文件,以便我知道我在记录的末尾。当我到达记录的末尾时,我需要在文件中写入两个字符串(Key:Value),它们之间带有冒号。
所以基本上我需要:
在:
# example.ldif dn: Aamir_005_000 cn: Aamir_25 givenname: Aamir dn: Saul_024 cn: Saululite givenname: Saul
之后:python myscript.py ./example.ldif sillyname syllabear
# example.ldif dn: Aamir_005_000 cn: Aamir_25 givenname: Aamir sillyname: syllabear dn: Saul_024 cn: Saululite givenname: Saul sillyname: syllabear
答案 0 :(得分:0)
Python支持使用python-ldap project及其ldif模块的LDAP记录。
就像任何结构化文件格式一样,您希望使用强大的解析器和生成器来读取记录,操作它们并将它们写回来。
你不想尝试使用像正则表达式之类的黑客来解析文件,只是当文件中的某些内容在下周发生变化,然后在那之后的一周以及之后的几天内,你的代码就会中断。这一点。
您也不会尝试将XML节注入XML文件,您可以使用XML解析器,注入所需内容并将其写回。
答案 1 :(得分:-2)
import sys
with open(sys.argv[1],'r+') as f1:
lines=[x.strip() for x in f1]
f1.truncate(0)
f1.seek(0)
for x in lines:
if x:
f1.write(x+'\n')
else:
f1.write("{0}:{1}\n\n".format(sys.argv[2],sys.argv[3]))
f1.write("{0}:{1}\n\n".format(sys.argv[2],sys.argv[3]))