这里我正在写一些内容到python中的文本文件,当我尝试运行它而不编写函数时,它运行良好并且我得到了所需的结果但是当我尝试应用def函数()时:同样没有发生。任何帮助对学习都很有用。
{ get; set; }
答案 0 :(得分:-1)
如果你有self作为参数,这意味着你在python类中,因为当你调用fu时你实际上并没有为self传递一个值。你应该声明一个类对象并从中调用fu方法,或者为self参数传递一个值(很可能是你的文件/目录/路径)。
答案 1 :(得分:-1)
这里有几件事需要检查:
你的缩进。您的else
声明(以及下面的所有代码)在其他所有内容中都没有正确缩进。
如何从包调用不同的变量等。由于您没有发布所有代码,我不确定,但您可能需要from xml import etree
(除其他外),然后执行etree.ElementTree
而不是ET
。
你真的用适当的参数调用函数吗?添加所有必要的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()
如果正如您在评论中所说的那样将其作为print(fu())
运行,则会出现另一个问题。你的功能需要一个参数!如果你的函数fu()
在一个对象中,那就可以了;相反,你需要提供一个参数,可能(正如@ CaryShindell的答案所说)你的文件名/路径。