如何为列表中的每个元素复制一个文件,文件以该元素命名,并在新的fi中替换字符串元素的单词

2024-05-08 23:25:59 发布

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

我试图获取一个模板,复制它并将其命名为列表的一个元素,然后我需要找到一个特定的单词并用string元素替换它。对于列表中的每个元素

范例

这就是我所拥有的

  • 模板文件测试: “XXXX很好”

  • 名单

    1. 妈妈
    2. 爸爸
    3. 孩子

这就是我需要的

  • 创建文件:

    1. 妈妈,abc
    2. 爸爸,abc
    3. Child.abc

-已创建文件中的文本:

  1. “妈妈很好”
  2. “爸爸很好”
  3. “孩子很好”

文件扩展名不是txt,但我没有遇到任何问题

我用下面的代码尝试了一下;结果只有两个文件(列表有两行以上),第二个文件是空的

如果能帮上点忙,我将不胜感激

template = open ('C:\\Users\\Munoz\\Desktop\\template.abc', 'r')

for element in myList: #For each element in my list
    with open('C:\\Users\\Munoz\\Desktop\\'+element.strip()+'.abc', "w") as newFile: #create a file with the name of the element and abc extension
        for line in template: #for every line in template
            newFile.write(line.replace("Name",element.strip())) #copy the line and replace "Name" with the element name

template.close

Tags: 文件thein模板元素列表forwith
1条回答
网友
1楼 · 发布于 2024-05-08 23:25:59

您的template变量是一个文件句柄,而不是字符串。因此for line in template的第二次迭代没有留下任何可读取的内容,因为文件指针已经位于上次运行时的文件末尾

可以在每个元素的for循环中打开文件句柄,但这样做效率很低。或者,您可以每次使用template.seek(0)重置文件指针,但再次强调,每次通过循环读取文件都是低效的

最好将整个文件读入一个行列表,然后遍历该字符串列表

with open('C:/Users/Munoz/Desktop/template.abc', 'r') as f:
    lines = f.read().splitlines()

for element in myList:
    with open('C:/Users/Munoz/Desktop/' + element.strip() + '.abc', "w") as newFile:
        for line in lines:
            newFile.write(line.replace("Name", element.strip()))

相关问题 更多 >