我有一个大区域文件,我想转移到另一个提供商。我的问题是导出只是一个大型连接区域文件,因为我的新注册商只接受单个标准区域文件。
例如allzone.txt包含:
somedomain.com
=========
Record data...
...
------------
anotherdomain.com
=========
Record data...
...
------------
evenmoredomain.com
=========
Record data...
...
------------
我想要发生的是它需要上面的一个文件并创建3个文件。
somedomain.txt
anotherdomain.com.txt
evenmoredomain.com.txt
在每个文件中包含以下内容的分隔符:
anydomain.com
=========
and
------------
仅被移除
"Record data"
之间。
因此,文件应该命名为domainA.com.txt,并且只在相应的记录数据中。
不确定最好的方法是什么。我可以拆分分隔符,但不知道如何将该内容写入一个新文件,其中名称是分隔符之前的名称(anydomain.com)
谢谢!
答案 0 :(得分:1)
这样的事情可能有用吗?它可能仍需要一些调整
def main():
with open('allzone.txt', 'r+') as f:
data = ''
first_line = ''
for line in f:
if first_line == '':
first_line = line
elif line == '------------\n':
new_file = open('%s.txt' % first_line.rstrip(), 'w+')
new_file.write(data)
new_file.close()
first_line = ''
data = ''
elif line == '=========\n' or line == '...\n' or line == '------------\n':
pass
else:
data += line
if __name__ == '__main__':
main()
答案 1 :(得分:1)
或多或少
current_file = None
with open('allzone.txt') as f:
# read line by line
for line in f:
# open next file and close previous
if line.startswith('domain'):
# close previous file
if current_file:
current_file.close()
# open new file
current_file = open(line.strip() + '.txt', 'w')
# write to current file
if current_file:
if not (line.startswith('domain') or line.startswith('---') or line.startswith('===')):
current_file.write(line)
# close last file
if current_file:
current_file.close()
编辑:任何域名的新版本
current_file = None
with open('allzone.txt') as f:
# read line by line
for line in f:
# open next file
if not current_file:
# open new file
current_file = open(line.strip() + '.txt', 'w')
# skip next line
next(f)
else:
# close previous file
if line.startswith('---') :
current_file.close()
current_file = None
# write records
#elif not line.startswith('==='): # use it if you don't use `next(f)`
else:
current_file.write(line)
# close last file
if current_file:
current_file.close()