【问题标题】:Writing into a file with a variable taken from a list in txt file使用从 txt 文件中的列表中获取的变量写入文件
【发布时间】:2020-02-29 04:06:47
【问题描述】:

我正在尝试使用 txt 列表在 Python 中创建一个 xml 文件。在该列表中,我需要使用不同的对象来命名创建的文件,并将这些对象添加到我插入的 xml 代码中。

我的代码如下所示:

List = open(r"C:\Users\admin\Desktop\CTT\Feeder.txt")
List2 = ('D707_FEEDER_' + s.strip() for s in List)
for item in List2: 
open(r"C:\Users\admin\Desktop\CTT\Templates\%s.xml"%(item,), 'w')List.close()

我的对象列表“s”被称为Feeder.txt,我设法创建了一个循环遍历 Feeder.txt 文件的代码,并根据 Feeder.txt 中的对象列表为每个对象创建一个文件名.现在我想将一个 xml 代码插入到我刚刚创建的列表中的所有文件中,并使用相同的变量 ('s') 写入每个文件。

所以现在我的文件名为 D707_FEEDER_R407 的文件示例,我想在该文件中插入代码:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<envGroups/>
<item>xxx<item/>

并用我的“s”变量替换“xxx”,在这种情况下是 R407,所以我希望我的代码看起来像这样:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<envGroups/>
<item>R407<item/>

我确实试过这个:

List = open(r"C:\Users\admin\Desktop\CTT\GlobalFilter.txt") List2 = ('D607_GBF_' + s.strip() for s in List) 对于 List2 中的项目: f = open("模板\%s.xml"%(item,), 'w') f.write("\n") f.write("\n") f.write(f"{s.strip() for s in List}") List.close() f.close()

但是当我打开创建的 xml 文档而不是值“R407”时,我得到了这个:&lt;generator object &lt;genexpr&gt; at 0x0988C878&gt;。 我可以请教如何解决这个问题吗? 提前致谢!!

【问题讨论】:

    标签: python-3.x


    【解决方案1】:

    尝试将您的 write() 函数中的语句转换为 f 字符串,以便将列表中 s 的剥离值放置在 {花括号}内的字符串中

    write(f"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n
    <envGroups/>\n
    <item>{s.strip() for s in List}<item/>\n
    ")
    

    此外,如果您可以提供语法错误消息,这可能有助于进一步调查。

    【讨论】:

    • 嗨 Shavi,我试过了,我在 xml 代码中得到了这个值,而不是我的值: at 0x0988C878>。
    • 我不确定您文件的内容,但您可能需要在该对象中导航才能找到您正在寻找的值...尝试:import inspect as inspect@ 987654323@ where 'yourObject' 变量 's' 或者你得到那个 的任何地方。
    • ^^^ 这应该会显示对象中所有可用的方法和变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    • 2021-07-23
    • 2017-09-24
    • 2018-01-05
    • 2013-10-03
    • 1970-01-01
    相关资源
    最近更新 更多