AttributeError:'str'对象在Python中没有属性'filename'

时间:2013-09-26 13:15:35

标签: python

我是Python的新手,目前正在学习,我有一个任务是用python脚本读取和写入文件。我的脚本的读取部分似乎按预期工作,但写入部分抛出错误。这可能是我做过的微不足道的事情,但这是我的代码:

class LogMessage():
  def __init__(self, filename):
    self.filename = filename

  def read(self):
    inputFile = open(self.filename)
    for line in inputFile:
        print(line, end='')

  def write(self):
    outputFile = open(self.filename)
    #writeInput = input('What data do you wish to write?:\n')
    for line in writeInput:
            print(line,file = outputFile, end='')




filename = LogMessage('new.txt')
filename.read()
writeInput = input('What data do you wish to write?:\n')
LogMessage.write(writeInput)

读取部分可以工作,但是获取用户数据并将其写入文件并提供此错误:

Traceback (most recent call last):
File "/home/alex/workspace/Python/Learn Python/labEx9.py", line 22, in <module>
LogMessage.write(writeInput)
File "/home/alex/workspace/Python/Learn Python/labEx9.py", line 11, in write
outputFile = open(self.filename)
AttributeError: 'str' object has no attribute 'filename'

任何人都可以帮助我,非常感谢。

亚历

3 个答案:

答案 0 :(得分:4)

你必须在'filename'上调用'write',这是LogMessage的一个实例,而不是在LogMessage类上。

除此之外,还有其他问题(例如'writeInput'未在方法'write'中定义)

答案 1 :(得分:1)

如果在使用flask时出现此类错误,请检查您的 html代码(your_form。)并将其添加到html中:

<form method="POST" action="" enctype="multipart/form-data">

enctype =“ multipart / form-data” 会有所帮助。

答案 2 :(得分:0)

class LogMessage():
def __init__(self, filename):
    self.filename = filename

def read(self):
    inputFile = open(self.filename)
    for line in inputFile:
        print(line, end='')

def write(self):
    writeInput = input('What data do you wish to write?:\n')
    outputFile = open(self.filename, 'w')
    for line in writeInput:
            print(line, file = outputFile, end='')

filename = LogMessage('new.txt')
filename.write()
filename.read()