在open()函数中包含'r'的目的是什么?

时间:2015-09-03 12:37:32

标签: python python-3.x

有什么区别:

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'是什么意思?

2 个答案:

答案 0 :(得分:3)

这里有三种不同的东西:

  1. 您打开文件的模式
  2. 您对文件执行的操作
  3. 通过默认参数发送的隐式参数
  4. 您的陈述:

      

    根据我的理解,第二个论点是&#39; r&#39;对于open()实际上是告诉系统在打开文件后读取文件

    不太正确。 'r'表示您希望以读取模式打开文件;它本身并没有读任何东西。您也可以顺便读取以其他模式打开的文件。

    open函数采用默认值为'r'的模式字符串,因此省略此参数会产生相同的结果。

答案 1 :(得分:1)

打开和读取文件是不同的操作。

打开文件作为从中读取或写入文件的第一步。默认情况下,open()调用以读取模式访问文件。将'r'指定为第二个参数只是明确地做同样的事情。 (指定'w'将以写入模式打开文件。)

文件打开后,可以在一个大块(例如你的代码),一次一行,一次一个字节或使用不同读操作的更复杂方案中读取。