zoukankan      html  css  js  c++  java
  • Python中open函数怎么操作文件--9

    转:https://www.tuicool.com/wx/vYjaYnV

    在 Python 中,如果想要操作文件,首先需要创建或者打开指定的文件,并创建一个文件对象,而这些工作可以通过内置的 open() 函数实现。

    open() 函数用于创建或打开指定文件,该函数的常用语法格式如下:

    file = open(file_name [, mode='r' [ , buffering=-1 [ , encoding = None ]]])

    此格式中,用 [] 括起来的部分为可选参数,即可以使用也可以省略。其中,各个参数所代表的含义如下:

    file_name:要创建或打开文件的文件名称,该名称要用引号(单引号或双引号都可以)括起来。需要注意的是,如果要打开的文件和当前执行的代码文件位于同一目录,则直接写文件名即可;否则,此参数需要指定打开文件所在的完整路径。

    mode:可选参数,用于指定文件的打开模式。可选的打开模式(如下方表格)所示。如果不写,则默认以只读(r)模式打开文件。

    buffering:可选参数,用于指定对文件做读写操作时,是否使用缓冲区(本节后续会详细介绍)。

    encoding:手动设定打开文件时所使用的编码格式,不同平台的 ecoding 参数值也不同,以 Windows 为例,其默认为 cp936(实际上就是 GBK 编码)。

    open() 函数支持的文件打开模式如下:

    模式 描述
    r 只读模式打开文件,读文件内容的指针会放在文件的开头。
    rb 以二进制格式、采用只读模式打开文件,读文件内容的指针位于文件的开头,一般用于非文本文件,如图片文件、音频文件等。
    r+ 打开文件后,既可以从头读取文件内容,也可以从开头向文件中写入新的内容,写入的新内容会覆盖文件中等长度的原有内容。
    rb+ 以二进制格式、采用读写模式打开文件,读写文件的指针会放在文件的开头,通常针对非文本文件(如音频文件)。
    w 以只写模式打开文件,若该文件存在,打开时会清空文件中原有的内容。
    wb 以二进制格式、只写模式打开文件,一般用于非文本文件(如音频文件)
    w+ 打开文件后,会对原有内容进行清空,并对该文件有读写权限。
    wb+ 以二进制格式、读写模式打开文件,一般用于非文本文件
    a 以追加模式打开一个文件,对文件只有写入权限,如果文件已经存在,文件指针将放在文件的末尾(即新写入内容会位于已有内容之后);反之,则会创建新文件。
    ab 以二进制格式打开文件,并采用追加模式,对文件只有写权限。如果该文件已存在,文件指针位于文件末尾(新写入文件会位于已有内容之后);反之,则创建新文件。
    a+ 以读写模式打开文件;如果文件存在,文件指针放在文件的末尾(新写入文件会位于已有内容之后);反之,则创建新文件。
    ab+ 以二进制模式打开文件,并采用追加模式,对文件具有读写权限,如果文件存在,则文件指针位于文件的末尾(新写入文件会位于已有内容之后);反之,则创建新文件。

    一、创建文件

    file = open('hello.txt','w')
     

    运行结果会在当前执行脚本的目录下会创建一个hello.txt文件。

    二、写入文件

    file = open('hello.txt','w')
    print(file.write('码农博客
    '))    # .write()方法是往文件里写入内容
    file.close()        # .close()方法是将文件关闭
     

    运行结果:

    1
    5

    运行结果的5是告诉我们一共写入了5个字符。但是你打开文件看会出现乱码,这要怎么解决呢?

    file = open('hello.txt','w',encoding='utf-8')        # 将编码设定成utf-8编码
    print(file.write('码农博客
    '))
    file.close()
     

    这个时候你再打开文件,显示就是正常的。

    三、读取文件

    读取文件中的全部内

    file = open('hello.txt','r',encoding='utf8')
    print(file.read())      # read方法是读取文件中全部内容
     

    运行结果:

    1
    码农博客
     

    逐行读取文件的内容

    file = open('hello.txt','r',encoding='utf8')
    print(file.readline())      # readline方法是逐行读取文件中的内容
     

    运行结果:

    1
    码农博客
     

    如果要打印第二行内容的话,那就再写一次“print(file.readline())”。


    读取文件中全部内容并返回成列表

    file = open('hello.txt','r',encoding='utf8')
    print(file.readlines())      # readlines方法是读取文件中所有内容,返回一个列表,并将每行内容当成列表中的一个元素
     

    运行结果:

    ['码农博客
    ']
     

    四、with上下文

    如果怕文件打开后忘记关闭,可以使用with上下文,再执行完with下的代码之后,文件会自动关闭。

    with open('hello.txt','r',encoding='utf8') as f:    # as是给文件临时取名叫f
        print(f.readlines())
     

    运行结果:

    ['码农博客
    ']
  • 相关阅读:
    Mysql:Group Replication & Replication
    使用winsw包装服务将nginx包装为Windows服务
    Nginx的一些常用配置
    在ASP.NET Core 2.0中使用Facebook进行身份验证
    展现层实现增删改查
    ABP创建应用服务
    ABP领域层定义仓储并实现
    ABP领域层创建实体
    通过模板创建一个ABP项目
    Android UI组件:布局管理器
  • 原文地址:https://www.cnblogs.com/tigergaonotes/p/14196633.html
Copyright © 2011-2022 走看看