如何输出带有不同信息的多个文件?

时间:2019-04-23 04:01:16

标签: python

我正在尝试从两个不同的文件中读取信息。第一个文件“数据库”是包含人员名称和有关人员信息的不同部分的文件。每个人(及其信息)与其他人按行分隔。第二个文件“模板”是带有编号占位符的垃圾邮件电子邮件模板。我的目标是将数据库的信息部分读入模板中编号的占位符,并为每个人(数据库中3人)输出一个文件。因此,我应该有3个输出文件。

npm install -g @angular/cli

我希望它输出到3个不同的文件。当前它输出3个文件,但是每个模板输出仅在最后一行具有名称和信息。我需要第一个文件具有包含第一人称信息的模板,第二个文件包含第二人称的信息,第三个文件包含第三人称的信息。

1 个答案:

答案 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(),您从数据库中获取带有第一文件的第一行,并使用第一数据填充模板并保存在第一文件中,接下来,您从数据库中获取具有第二文件的第二行,并使用第二数据填充模板并保存。在第二个文件中,等等。