python笔记——文件读写操作过程(open与with open的区别)

系统 4060 0

文件的读写通常包含以下步骤:

  1. 文件的打开:open()
    open或with open会返回文件对象,必须用read或readlines之后才能打印
    在此我会介绍with open 与open之间的区别。提前剧透with open优于open
  2. 文件的读入:read()
  3. 文件的写入:write()
  4. 文件的关闭:close()

另外介绍两个模块的内容:

  • 文件的定位
  • 文件的属性

一、文件的打开:open与with open(返回文件对象)


1、open

open(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
file :包含路径的文件名。绝对路径或者是相对路径
mode| :选择不同的模式可以对文件进行不同的操作, 默认属性’rt’ ,即以只读方式打开文本文件。

模式 描述
‘r’ 只读方式: 默认属性
‘w’ 写入模式:如果该文件已存在则打开文件,并从开头开始编辑,原有内容被删除。如果文件不存在,创建新文件
‘x’ 只写模式:新建一个文件,如果该文件已存在则会报错。
‘a’ 追加模式:如果文件存在,指针放在文件结尾。新内容将会被写入到已有内容之后。如果文件不存在,创建新文件写入
‘b’ 二进制模式。
‘t’ 文本模式: 默认属性
‘+’ 打开一个文件进行更新(可读可写)
‘U’ 通用换行模式(不推荐)

以下几点是总结:参考原文:https://www.cnblogs.com/xyf9575/p/7039548.html

  • w 写模式,它是不能读的,如果用w模式打开一个已经存在的文件,会清空以前的文件内容,重新写
    w+ 是读写内容,只要 沾上w,肯定会清空原来的文件
  • r 读模式,只能读,不能写,而且文件必须存在
    r+ 是读写模式,只要 沾上r,文件必须存在
  • a 追加模式,也能写,在文件的末尾添加内容
  • rb+、wb+、ab+,这种是二进制模式打开或者读取,一些音乐文件

2、with open与open的区别

with open() as f的好处

  1. 无论出现是否出现error都会关闭文件
  2. 使用它的时候python会自动确定关闭时间,你只管打开文件并使用它。
    所以with open 是我们的首选,而非只使用open

二、文件的读入:

此模块常用的函数有:

  1. f.read():一次性读取整个文件 或类似f.read(10)读取从指针开始的10个字符。
  2. f.readlines():每次读取文件的一行,存入列表中
    pandas中还有一些:
    python笔记——文件读写操作过程(open与with open的区别)_第1张图片

pi_digits.txt

            
              
                3.1415926535
              
              
                8979323846
              
              
                2643383279
              
            
          

file_reader.py(看一下read()和readlines()的区别)

            
              
                >>
              
              
                >
              
               file_name 
              
                =
              
              
                'pi_digits.txt'
              
              
                >>
              
              
                >
              
              
                with
              
              
                open
              
              
                (
              
              file_name
              
                )
              
              
                as
              
               f
              
                :
              
              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              f
              
                .
              
              read
              
                (
              
              
                )
              
              
                )
              
              
                >>
              
              
                >
              
              
                print
              
              
                (
              
              f
              
                .
              
              readlines
              
                (
              
              
                )
              
              
                )
              
              
                3.1415926535
              
              
                8979323846
              
              
                2643383279
              
              
                ###以上三行结果是read的
              
              
                [
              
              
                '3.1415926535\n'
              
              
                ,
              
              
                '  8979323846\n'
              
              
                ,
              
              
                '  2643383279'
              
              
                ]
              
              
                ### 此行结果是readlines的
              
            
          

三、文件的写入


1、写入空文件:以’w’方式打开文件。

demo1

            
              file_name 
              
                =
              
              
                "love_letter"
              
              
                with
              
              
                open
              
              
                (
              
              love_letter
              
                ,
              
              
                'w'
              
              
                )
              
              
                as
              
               f
              
                :
              
              
    f
              
                .
              
              write
              
                (
              
              
                "I love you\n"
              
              
                )
              
              
    f
              
                .
              
              write
              
                (
              
              
                "i love you\n"
              
              
                )
              
            
          

最终会显示
I love you
i love you

2、在旧文件后面添加新内容:以’a’方式打开

demo2

            
              file_name 
              
                =
              
              
                "love_letter"
              
              
                with
              
              
                open
              
              
                (
              
              file_name
              
                ,
              
              
                'a'
              
              
                )
              
              
                as
              
               f
              
                :
              
              
    f
              
                .
              
              write
              
                (
              
              
                "I also love you\n"
              
              
                )
              
            
          

最终会在demo1下面添加一行
I also love you

四、文件的关闭


如果是with open打开的不用管这个,如果是open打开的则需要在文末输入下列代码

            
              f
              
                .
              
              close
              
                (
              
              
                )
              
            
          

五、文件的定位(指针)


指针就相当于我们在word中输入时候的光标,光标在哪文件就从哪开始输入。

  • f.tell():报告当前指针位置
  • f.seek(offset,from)
    offset代表文件指针的偏移量,
    from代表从何处开始算:0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节)

使用open()方法打开文件时候,指针会默认在文件开始的地方。
f.read(3)是从指针所在的地方往后读取三个字符,也就是说不改变指针的位置的话,f.read(3)就是读取文件开头的三个字符。
f.write()则是将指针放在文件末尾进行写入,写完之后指针依旧会在文件末尾。


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论