这是我尝试做的,我使用的是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"
我也不知道如何解决错误问题。 我将感激您的时间和帮助。
答案 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正在翻译数字。)修复方法是传递至少可能是文件名的字符串。如果文件名太长或找不到文件,您将收到不同的错误和消息。