如何解决如何使用python将ldif拆分为较小的文件?
给定一个 ldif
文件,其中有 999 条记录需要用 ldapmodify
更新,我该如何将其拆分成更小的文件?
https://stackoverflow.blog/2011/07/01/its-ok-to-ask-and-answer-your-own-questions/
解决方法
执行 splitLdifByFiles('/tmp/bigfile.ldif',10)
将创建 10 个文件并以循环方式在它们之间均匀分布所有记录。
def splitLdifByFiles(ldiffile,nfiles):
'''
Recebe um arquivo ldif <ldiffile> e separa em N arquivos <nfiles> menores (round robin)
'''
with open(ldiffile,'r') as fr:
reader = fr.read()
chunks = ['\n'+c+'\n' for c in reader.split('\n\n') if c]
files = [open('/tmp/df.chunk.%d.ldif' % i,'w') for i in range(nfiles)]
for idx,chk in enumerate(chunks):
files[idx % nfiles].writelines(chk)
for f in files:
f.close()
,
执行 splitLdifByRecords('/tmp/bigfile.ldif',100)
会将 100 条记录写入输出文件并关闭它,重复此过程直到到达最后一个数据块。
在本例中,最后一个文件将包含剩余的 99 条记录。
def splitLdifByRecords(ldiffile,maxrecords):
'''
Recebe um arquivo ldif <ldiffile> e separa em N registros <maxrecords> por arquivo
'''
with open(ldiffile,'r') as fr:
reader = fr.read()
chunks = ['\n'+c+'\n' for c in reader.split('\n\n') if c]
chunkfile = None
for idx,chk in enumerate(chunks):
if idx % maxrecords == 0:
if chunkfile: chunkfile.close()
chunkfile = open('/tmp/df.chunk.%d.ldif' % (idx + maxrecords),'w')
chunkfile.writelines(chk)
if chunkfile: chunkfile.close()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。