open函数的参数无效

时间:2018-01-17 19:55:43

标签: python

这是我尝试做的,我使用的是Windows和Python 3.4和PySide:

    def computewrite(self):
        text = self.lineID.text()
        with open(str(readdata.filename), 'a') as myfile:
            myfile.write(str(text))

以上代码当然是模块的一部分,当我运行模块时,我收到如下错误信息:

[Errno 22] Invalid argument: '<function readdata.filename at 0x0535BF18>'

我试图在其他类的字符串中写入filename(readdata.filename),比如

def filename():
        filename = "inputs2.txt"

我也不知道如何解决错误问题。 我将感激您的时间和帮助。

2 个答案:

答案 0 :(得分:4)

首先,day函数需要返回一些东西。 所以该函数的主体需要看起来像:

filename

但是您看到的错误消息是由尝试将函数def filename(): filename = "inputs2.txt" return filename 转换为字符串引起的。您需要先调用该函数来获取值:

readdata.filename

(注意open(str(readdata.filename()), 'a') 之后的开括号和近括号

如果filename已经返回了一个字符串,则您不需要调用readdata.filename,并且可以像这样打开文件:

str()

答案 1 :(得分:0)

Paul,您传递了要打开的函数的字符串表示形式,并且该字符串不是合法的文件名。 PySide没有向我们展示实际的Python异常,但错误号通常来自OSError,import errno; errno.errorcode[22]EINVAL,它扩展为无效参数。 (Windows使用不同的错误号,因此您要么不使用Windows,要么PySide正在翻译数字。)修复方法是传递至少可能是文件名的字符串。如果文件名太长或找不到文件,您将收到不同的错误和消息。