操作写入文件类

时间:2014-02-12 16:32:27

标签: python file-io

以下课程有效,我只是想操纵顶级课程为我工作:

此类写入文件:

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 - 但这不应该是重要的,所以当一些微妙的东西不起作用时,它只是不告诉你)

1 个答案:

答案 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到底有什么期待。)