Python操作文件:从入门到“悟”

2023-09-01 08:29:59 浏览数 (1)

一、打开文件

Python里面打开文件可以使用内置的open函数。

open函数的定义如下:

代码语言:javascript复制
def open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True): # known special case of open

常用参数介绍:

  • file:指定要打开的文件名
  • 打开模式(mode):打开模式可以是一个字符串,用于指定读取、写入或追加等操作。常见的打开模式包括 "r"(读取模式)、"w"(写入模式)、"a"(追加模式)
  • 编码(encoding,可选):用于指定文件的字符编码,仅在文本模式下使用,比如utf-8,gbk等

其他的参数我暂时没怎么用过,先不进行过多介绍,以免文档写错了,对大家造成困扰。

下面来重点看下mode介绍,先看函数官方定义的文档中是怎么描述的:

代码语言:javascript复制
 ========= ===============================================================
    Character Meaning
    --------- ---------------------------------------------------------------
    'r'       open for reading (default)
    'w'       open for writing, truncating the file first
    'x'       create a new file and open it for writing
    'a'       open for writing, appending to the end of the file if it exists
    'b'       binary mode
    't'       text mode (default)
    ' '       open a disk file for updating (reading and writing)
    ========= ===============================================================

英文看不懂的话 ,我再来写一下自己的理解:

代码语言:javascript复制
 ========= ===============================================================
    Character Meaning
    --------- ---------------------------------------------------------------
    'r'       读取模式,也是默认的选项
    'w'       写入模式,首先清空文件再写入
    'x'       创建新文件并打开进行写入,如果文件已存在时会报错:FileExistsError: [Errno 17] File exists
    'a'       追加模式,如果文件存在则在文件末尾追加
    'b'       二进制模式
    't'       文本模式 (default)
    ' '       表示以更新模式打开文件。这种模式允许对文件进行读取和写入操作,即同时支持读取和写入
    ========= ===============================================================

rwabt这几个字母怎么去记忆呢?可以根据对应的英文单词喔,分别是read、write、append、byte、text。

二、使用with语句操作文件

在Python中,打开文件后最好使用with语句来读取文件。with语句在结束时会自动关闭文件,无需显式调用close()方法。with语句提供了一种方便的方式来确保在文件使用完毕后自动关闭,以避免资源泄漏和错误。当with块结束时,文件将自动关闭,即使在处理文件期间发生异常或错误,也会正确地关闭文件。

代码语言:javascript复制
with open('myfile.txt', 'r',encoding="utf-8") as file:
    content = file.read()
    # 在这里可以对文件内容进行处理
    print(content)
# 文件会在with语句结束后自动关闭,无需手动调用file.close()

逐行读取文件:

代码语言:javascript复制
with open('myfile.txt', 'r',encoding="utf-8" ) as file:
    for line in file:
        # 对每一行进行处理
        print(line)

按行写入文件:

代码语言:javascript复制
lines = ['Line 1', 'Line 2', 'Line 3']
with open('myfile.txt', 'w') as file:
    for line in lines:
        file.write(line   'n')

0 人点赞