猿问

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

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


database = open("database", "r")


template = open("template", "r")


outfile1 = open("junk1", "w")


outfile2 = open("junk2", "w")


outfile3 = open("junk3", "w")


for line in database:

    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 line in template:

    string = line


    for r in (("|1|",title),("|2|", firstname),("|3|", lastname),("|4|", address),("|5|", city),("|6|", state),("|7|", zipcode)):

        string = string.replace(*r)

    outfile1.write(string)

    outfile2.write(string)

    outfile3.write(string)          



outfile1.close()

outfile2.close()

outfile3.close()




database.close()

template.close()

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


慕后森
浏览 176回答 1
1回答

阿晨1998

您可以使用zip()从数据库和文件中获取数据,您必须在其中写入这些数据。它可能是这样的database = open("database", "r")# read all to memory to use it many times in `for` looptemplate = 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()第一个文件从数据库中获取第一行并使用第一个数据填充模板并保存在第一个文件中,然后使用第二个文件从数据库中获取第二行并使用第二个数据填充模板并保存在第二个文件中,等等。
随时随地看视频慕课网APP

相关分类

Python
我要回答