我不明白为什么输出不同。这一点是相同的。为什么通过变量指定数据量会产生这样的结果? 谢谢你的关注
with open('/Users/tt/Desktop/words.py', 'r') as readings:
readings.read(10)
print(readings)
'I do know!'
<_io.TextIOWrapper name='/Users/tt/Desktop/words.py' mode='r' encoding='UTF-8'>
with open('/Users/tt/Desktop/words.py', 'r') as readings:
tensymbols = readings.read(10)
print(tensymbols)
I do know!
这看起来像是从Python的REPL(即
>>>
交互式提示符)以父级方式运行它第一次尝试返回作为Python字符串读取的字符串(带引号)。然后要求Python
print
打开文件句柄,因为文件句柄没有合理的字符串表示形式,所以P Ython打印其repr()
字符串第二次尝试只是要求Python
print
字符串;因为这是一个字符串,不必为了产生一个人类可读的表示而被破坏,所以它是逐字打印的输出不同,因为读数是类型为“_io.TextIOWrapper”的对象。所以当你打印读数时,你实际上是在打印一个对象
但是,当您将其分配给变量时,它将转换为字符串。因此,您打印的是字符串而不是对象
因此,两种情况下的输出都不同
它有助于发布您的实际shell会话,以便我们可以可视化正在发生的事情。如果只是将其作为python脚本运行,我们将永远不会看到第一个“我确实知道!”,因为它将被丢弃,因为它没有分配给变量
在第一种情况下,读取并丢弃文件的前10个字符。事实证明,如果函数调用不是
None
,pythonshell和大多数IDE将显示函数调用的结果,这就是您在屏幕上看到的结果由于您没有分配
readings.read(10)
的结果,因此它将被丢弃……除非shell首先向您显示它在第二种情况下,保留返回的字符串,以后可以使用它
请注意,如果您第一次打印
readings
,它就像第一次一样是一个io包装器相关问题 更多 >
编程相关推荐