以下课程有效,我只是想操纵顶级课程为我工作:
此类写入文件:
class saveRegister :
def __init__( <--snip--> #defines some of the variables in the write function
def writeToFile(self,file) :
file.write(... #saves values in a specific format
这用上面写的类是我很快在我的基础上写的:
class Prep :
def writeToFilename( self, filename, registerNames ) :
file = open( filename, 'w+' )
for register in self.registers : #format here same as in my code
register.writeToFile(file)
file.close()
我正在尝试重用他们的代码在我的另一个文件中使用我的代码,但无法弄清楚我做错了什么。作为一个快速测试,我想使用上面的内容将其写入文件:
from mylib.saveFiles import saveRegister
def saveStateValues(self, msg):
filename="/tmp/test.txt"
reg_test = {"HelloWorld":0x5}
file.open(filename, 'w+')
for register in reg_test:
register.saveRegister.writeToFile(file)
file.close()
甚至没有显示写入的文件,这很奇怪,因为当我在此之前使用file.open()方法时,它可以工作。我不能给你一个错误信息,因为没有(由于各种恼人的原因,这被翻译成Java - 但这不应该是重要的,所以当一些微妙的东西不起作用时,它只是不告诉你)
答案 0 :(得分:1)
我并不完全清楚你在做什么,但你的saveStateValues
方法中存在很多错误。
file
是Python中的内置函数 - 它实际上是open
的同义词 - 并且没有file.open
这样的东西。该函数返回一个打开的文件,但是你把它丢弃而不是存储在变量中:然后你将函数本身传递给你的writeToFile
,而不是你刚刚打开的文件。
然后你的循环还有更多问题。您遍历reg_test
,这是一个字典,因此register
的每个值都是该字典的关键字。但出于某种原因,您将其视为对象并尝试访问其saveRegister
属性。 saveRegister
是您导入的一个类,因此没有意义。你应该做的是在循环外实例化一个saveRegister实例,然后将每个值传递给writeToFile
方法。
全部放在一起:
file_to_write = open(filename, 'w+')
save_register = saveRegister()
for register in reg_test:
save_register.writeToFile(file_to_write, register)
file_to_write.close()
(我很确定这不是完全正确的,因为你没有对reg_test
的值做任何事情,只是关键。我们可能需要知道saveRegister.writeToFile
到底有什么期待。)