被python文件模式“ w +”所混淆

发布于 2021-02-02 23:19:20

模式“ r +”,“ w +”“ a +”打开文件进行更新(请注意,“ w +”会截断文件)。在区分二进制文件和文本文件的系统上,将“ b”追加到以二进制模式打开文件的模式;在没有此区别的系统上,添加“ b”无效。

与此

w +:打开一个文件进行读写。如果文件存在,则覆盖现有文件。如果该文件不存在,请创建一个新文件以进行读写。

但是,如何读取打开的文件w+

关注者
0
被浏览
86
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    假设你要打开的文件带有with应有的声明。然后,你将执行以下操作以从文件中读取内容:

    with open('somefile.txt', 'w+') as f:
        # Note that f has now been truncated to 0 bytes, so you'll only
        # be able to read data that you write after this point
        f.write('somedata\n')
        f.seek(0)  # Important: return to the top of the file before reading, otherwise you'll just read an empty string
        data = f.read() # Returns 'somedata\n'
    

    请注意f.seek(0)-如果你忘记了这一点,则该f.read()调用将尝试从文件末尾读取,并将返回一个空字符串。



  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    Python中的所有文件模式

    • r 阅读
    • r+ 打开以进行读写(无法截断文件)
    • w 用于写作
    • w+用于写入和读取(可以截断文件)
    • rb用于读取二进制文件。文件指针位于文件的开头。
    • rb+读取或写入二进制文件
    • wb+ 编写二进制文件
    • a+ 打开进行追加
    • ab+打开一个文件,以附加和读取二进制文件。如果文件存在,则文件指针位于文件的末尾。该文件以追加模式打开。
    • x 打开以进行独占创建,如果文件已存在则失败(Python 3)


  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。


    以下是打开文件的不同模式的列表:
    [R
    打开一个文件以供只读。文件指针位于文件的开头。这是默认模式。

    rb
    打开文件以仅以二进制格式读取。文件指针位于文件的开头。这是默认模式。

    r +
    打开一个文件进行读取和写入。文件指针将位于文件的开头。

    rb +
    打开一个文件,以二进制格式读取和写入。文件指针将位于文件的开头。

    w
    打开仅用于写入的文件。如果文件存在,则覆盖该文件。如果该文件不存在,请创建一个新文件进行写入。

    b
    打开一个文件,仅以二进制格式写入。如果文件存在,则覆盖该文件。如果该文件不存在,请创建一个新文件进行写入。

    w +
    打开一个文件进行读写。如果文件存在,则覆盖现有文件。如果该文件不存在,请创建一个新文件以进行读写。

    wb +
    打开一个文件,以二进制格式进行读写。如果文件存在,则覆盖现有文件。如果该文件不存在,请创建一个新文件以进行读写。

    一种
    打开一个文件进行追加。如果文件存在,则文件指针位于文件的末尾。也就是说,文件处于附加模式。如果该文件不存在,它将创建一个新文件进行写入。

    b
    打开一个文件以二进制格式追加。如果文件存在,则文件指针位于文件的末尾。也就是说,文件处于附加模式。如果该文件不存在,它将创建一个新文件进行写入。

    a +
    打开文件以进行追加和读取。如果文件存在,则文件指针位于文件的末尾。该文件以追加模式打开。如果该文件不存在,它将创建一个用于读取和写入的新文件。

    ab +
    打开一个文件,以便以二进制格式追加和读取。如果文件存在,则文件指针位于文件的末尾。该文件以追加模式打开。如果该文件不存在,它将创建一个用于读取和写入的新文件。


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看