我是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".我要导入的文件已存在,并且其中包含字符串。有什么问题吗?
发布于 2015-10-20 14:55:47
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:
passhttps://stackoverflow.com/questions/33229866
复制相似问题