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

2024-09-30 06:14:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从两个不同的文件中读取信息。第一个文件“数据库”是一个包含人名和有关这些人的不同部分信息的文件。每个人(以及他们的信息)与其他人之间用线隔开。第二个文件“template”是一个带有数字占位符的垃圾邮件模板。我的目标是将数据库中的信息部分读入模板中编号的占位符中,并为每个人(数据库中的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个文件,但每个模板输出只有最后一行的名称和信息。我需要的第一个文件有第一个人的信息填写模板,第二个文件包含第二个人的信息,第三个文件包含第三个人的信息


Tags: 文件模板信息数据库closestringlinetemplate
1条回答
网友
1楼 · 发布于 2024-09-30 06:14:58

您可以使用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()从数据库中获取第一行数据,然后使用第一个数据填充模板并保存在第一个文件中,接下来使用第二个文件从数据库中获取第二行数据,然后使用第二个数据填充模板并保存在第二个文件中,等等

相关问题 更多 >

    热门问题