我正在尝试从两个不同的文件中读取信息。第一个文件“数据库”是包含人员名称和有关人员信息的不同部分的文件。每个人(及其信息)与其他人按行分隔。第二个文件“模板”是带有编号占位符的垃圾邮件电子邮件模板。我的目标是将数据库的信息部分读入模板中编号的占位符,并为每个人(数据库中3人)输出一个文件。因此,我应该有3个输出文件。
npm install -g @angular/cli
我希望它输出到3个不同的文件。当前它输出3个文件,但是每个模板输出仅在最后一行具有名称和信息。我需要第一个文件具有包含第一人称信息的模板,第二个文件包含第二人称的信息,第三个文件包含第三人称的信息。
答案 0 :(得分:2)
您可以使用zip()
从必须在其中写入数据的数据库和文件中获取数据。
可能是这样的
database = open("database", "r")
# read all to memory to use it many times in `for` loop
template = list(open("template", "r"))
outfile1 = open("junk1", "w")
outfile2 = open("junk2", "w")
outfile3 = open("junk3", "w")
for line, output in zip(database, [outfile1, outfile2, outfile3]):
part = line.split("|")
title = part[0] #replaces #1
firstname = part[1] #replaces #2
lastname = part[2] #replaces #3
address = part[3] #replaces #4
city = part[4] #replaces #5
state = part[5] #replaces #6
zipcode = part[6] #replaces #7
for string in template:
for r in (("|1|", title),("|2|", firstname),("|3|", lastname),("|4|", address),("|5|", city),("|6|", state),("|7|", zipcode)):
string = string.replace(*r)
output.write(string)
outfile1.close()
outfile2.close()
outfile3.close()
使用zip()
,您从数据库中获取带有第一文件的第一行,并使用第一数据填充模板并保存在第一文件中,接下来,您从数据库中获取具有第二文件的第二行,并使用第二数据填充模板并保存。在第二个文件中,等等。