AttributeError“truncate”

时间:2015-10-20 06:51:57

标签: python truncate attributeerror

我是Python新手,我想弄清楚一些事情。我正在运行以下代码,我创建了两个函数来打开和擦除文件。

from sys import argv

script, filename = argv

def erase(text):
    print open(text, "w")
    text.truncate()

piece = filename

print "here I am erasing it"
print erase(piece)

文件实际上已被删除,但我收到错误:

AttributeError: "str" object has no attribute to "truncate".

我导入的文件存在且包含字符串。有什么问题?

1 个答案:

答案 0 :(得分:0)

def erase(text):
    print open(text, "w")
    text.truncate()

在该函数中text是文件名,一个字符串。因此,在打印出open()返回的文件对象之后,然后在文件名而不是文件对象上调用truncate()

您必须将open()的返回值存储在变量中,然后在该对象上调用truncate()

甚至更好,使用with声明:

def erase(filename):
    with open(filename, "w") as f:
        f.truncate()

正如Rob在评论中指出的那样,开放模式w已经截断了文件,所以在打开它之后,你实际上并不需要做任何事情:

def erase(filename):
    with open(filename, "w") as f:
        pass