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

2024-06-11 19:18:32 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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'

有人能帮我吗,非常感谢。

亚历克斯


Tags: 文件inself脚本readdef错误line
3条回答

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

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

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

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()

必须对“filename”调用“write”,这是LogMessage的实例,而不是LogMessage类。

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

相关问题 更多 >