将内容写入txt文件python

时间:2017-07-05 15:38:17

标签: python

这里我正在写一些内容到python中的文本文件,当我尝试运行它而不编写函数时,它运行良好并且我得到了所需的结果但是当我尝试应用def函数()时:同样没有发生。任何帮助对学习都很有用。

{ get; set; }

2 个答案:

答案 0 :(得分:-1)

如果你有self作为参数,这意味着你在python类中,因为当你调用fu时你实际上并没有为self传递一个值。你应该声明一个类对象并从中调用fu方法,或者为self参数传递一个值(很可能是你的文件/目录/路径)。

答案 1 :(得分:-1)

这里有几件事需要检查:

  1. 你的缩进。您的else声明(以及下面的所有代码)在其他所有内容中都没有正确缩进。

  2. 如何从包调用不同的变量等。由于您没有发布所有代码,我不确定,但您可能需要from xml import etree(除其他外),然后执行etree.ElementTree而不是ET

  3. 你真的用适当的参数调用函数吗?添加所有必要的import语句并修复缩进后,我没有错误。作为参考,这是我最终使用的代码:

    import os
    import re
    import datetime
    from xml import dom 
    from xml import etree
    
    def fu(self):
        self.xmldoc = dom.minidom.parse('C:\\Users\\xyz\\Doc\\abc.xml')
        self.tree = etree.ElementTree.parse('C:\\Users\\xyz\\Doc\\abc.xml')
        self.root = self.tree.getroot()
        self.validate_model = self.xmldoc.getElementsByTagName('MODEL')
        self.extract_model = self.validate_model[0].firstChild.nodeValue
        # print("hi "+extract_model[len(extract_model)-1:])
        self.headerlist = self.xmldoc.getElementsByTagName('HW_VERSION')
        self.validate_header = self.headerlist[0].firstChild.nodeValue
        # print("HW_VERSION: " + validate_header)
        # print("Length of HW_VERSION: " + str(len(validate_header)))
        if re.match('^[A-Za-z][A-Za-z0-9.]*$', self.validate_header):
            print("The HW_VERSION is valid")
        else:
            print("Sorry")
        self.save_path = "C:\\Users\\c\\Downloads\\errors"
        self.name_of_file = "Error_log1"
        self.completeName = os.path.join(self.save_path, self.name_of_file + ".txt")
        file1 = open(self.completeName, 'w')
        file1.write("Error Log file created at " + "\n")
        file1.write(str(datetime.datetime.now()) + "\n")
        file1.write("-------------------------------------" + "\n")
        file1.close()
    
  4. 如果正如您在评论中所说的那样将其作为print(fu())运行,则会出现另一个问题。你的功能需要一个参数!如果你的函数fu()在一个对象中,那就可以了;相反,你需要提供一个参数,可能(正如@ CaryShindell的答案所说)你的文件名/路径。