尝试将xml文件的输出写入txt文件

时间:2016-02-18 13:50:59

标签: python xml

下面是我的代码,执行时,没有创建文本文件,没有从XML文件中读取任何内容,此外,没有错误出现,基本上什么也没发生。任何建议??

import xml.etree.ElementTree

def main():
    b = xml.etree.ElementTree.parse('books.xml')
    persons = b.findall("book")
    for element in persons:
        author, title, genre, price, publish, description = book_data_from_element(element)
        f = open('offload.txt', 'w')
        f.write(author, title, genre, price, publish, description)
        f.close()

def book_data_from_element(element):
    author = element.find("author").text
    title = element.find("title").text
    genre = element.find("genre").text
    price = element.find("price").text
    publish = element.find("publish_date").text
    description = element.find("description").text
    return author, title, genre, price, publish, description

2 个答案:

答案 0 :(得分:0)

你不是在调用main方法,最简单的方法是编写

if __name__ == '__main__':
    main()

保存文件并从控制台调用,如python your_file.py

您也可以使用with上下文管理器而不是

    f = open('offload.txt', 'w')
    f.write(author, title, genre, price, publish, description)
    f.close()

答案 1 :(得分:0)

你的脚本运行正常。此特定模块定义了两个函数:mainbook_data_from_element。它也没有打电话。 Python不像C或Java,其中名称main是特殊的,因为它是程序的入口点。要执行main或任何其他功能,您必须在模块中运行它。将以下行添加到模块的底部:

if __name__ == '__main__':
    main()

if __name__ == '__main__':行称为导入警戒。如果您实际将模块导入另一个模块,它会阻止main运行。它有效,因为__name__将是用于导入的实际名称,而不是'__main__'