有什么区别:
with open('PHANTOM_PAIN_SPOILERS.txt') as temp:
print(temp.read())
...和
with open('PHANTOM_PAIN_SPOILERS.txt','r') as temp:
print(temp.read())
根据我的理解,'r'
的第二个参数open()
实际上是告诉系统在打开文件后读取文件,在我看来它应该使.read()
多余但是如果我在第二个例子中尝试打印临时print(temp)
,我最终得到类似于:<_io.TextIOWrapper name='PHANTOM_PAIN_SPOILERS.txt' mode='r' encoding='cp1252'>
那么,如果在这些情况下似乎没有做任何事情,首先要指定'r'是什么意思?
答案 0 :(得分:3)
这里有三种不同的东西:
您的陈述:
根据我的理解,第二个论点是&#39; r&#39;对于open()实际上是告诉系统在打开文件后读取文件
不太正确。 'r'
表示您希望以读取模式打开文件;它本身并没有读任何东西。您也可以顺便读取以其他模式打开的文件。
open
函数采用默认值为'r'
的模式字符串,因此省略此参数会产生相同的结果。
答案 1 :(得分:1)
打开和读取文件是不同的操作。
打开文件作为从中读取或写入文件的第一步。默认情况下,open()
调用以读取模式访问文件。将'r'
指定为第二个参数只是明确地做同样的事情。 (指定'w'
将以写入模式打开文件。)
文件打开后,可以在一个大块(例如你的代码),一次一行,一次一个字节或使用不同读操作的更复杂方案中读取。