首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AttributeError“截断”

AttributeError“截断”
EN

Stack Overflow用户
提问于 2015-10-20 14:51:57
回答 1查看 1.4K关注 0票数 1

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

代码语言:javascript
复制
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)

文件实际上被擦除了,但我得到了一个错误:

代码语言:javascript
复制
AttributeError: "str" object has no attribute to "truncate".

我要导入的文件已存在,并且其中包含字符串。有什么问题吗?

EN

回答 1

Stack Overflow用户

发布于 2015-10-20 14:55:47

代码语言:javascript
复制
def erase(text):
    print open(text, "w")
    text.truncate()

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

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

或者更好的方法是使用with语句:

代码语言:javascript
复制
def erase(filename):
    with open(filename, "w") as f:
        f.truncate()

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

代码语言:javascript
复制
def erase(filename):
    with open(filename, "w") as f:
        pass
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33229866

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档