一、打开文件
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')