TypeError:'file'类型的对象没有len()
你好我是编程初学者。我正在阅读Zed Shaw的书“学习Python困难之路”,并且遇到了一个我发现很奇怪的错误。我想知道为什么它不断给我的错误:TypeError:在Windows Powershell中运行我的代码后,'file'类型的对象没有len()。我跑的代码:TypeError:'file'类型的对象没有len()
from sys import argv
from os.path import exists
script, from_file, to_file = argv
print "Copying from %s to %s" % (from_file, to_file)
in_file = open(from_file, "r")
print "The input file is %d bytes long" % len(in_file)
它说错误在最后一行。我不明白为什么会出现这个错误,因为如果我是对的,我在读模式下打开我的文件并将其保存在变量in_file中。那为什么它不能读取in_file的len?在肖捷思锐的书,他在我写
in_file = open(from_file, "r")
与评论的地方写
in_file = open(from_file)
indata = in_file.read()
:# we could do these two on one line, how?
所以我认为他想让我写我写的代码。
如果有人能帮助我,我将不胜感激。在此先感谢
他希望你这样做in_file = open(from_file).read()
in_file是引用到您打开的文件。 如果你想存储你的文件的内容而不是引用它,你可以像上面那样做。
file = open("/path/to/file.txt").read()
这file
后,会给你的文件的内容,你可以使用file
变量获得的内容长度这样 len(file)
,之后你会在你的文件的内容得到符号数
希望这对你是有道理的。
注意
这是不好的做法,你需要保持你的文件引用和参考做你的行动。
“他希望你这样做'in_file = open(from_file).read()'” - 但**不要**这样做,因为你放弃了对文件的引用,并依靠引用计数机制来为你关闭它。这对于写入来说尤其危险,如果你的代码运行在一个没有引用的Python实现上,那么你的写入可能会延迟甚至丢失。 – user2357112
我同意,但任务是好的 –
请采纳在您的答案中发布*实际文本*并使用'{}'按钮或Ctrl-K将其格式化为代码的习惯。图片不可访问,可复制或特别可重复使用。 – jonrsharpe
“所以我想他要我写我写的代码。” - 不。你似乎误解了“r”的意思。 – user2357112
在读取模式下打开文件与读取file_完全不同。这是打开一本书与意图阅读它(而不是强调或强调段落)并实际阅读它的区别。 –
供参考:http://sopython.com/wiki/LPTHW_Complaints – jonrsharpe