生命在于学习——Python人工智能原理(2.6.1)

六 Python的文件系统

6.1 打开文件

在Python中,可以使用内置的open函数来打开文件,open函数的基本语法如下:

python 复制代码
file = open(file_name, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
python 复制代码
参数说明:

file_name (必需):要打开的文件名或路径。
mode (可选,默认为 'r'):文件打开模式。常见的模式有:
'r':只读模式(默认)。
'w':只写模式,如果文件已存在则会被覆盖。
'x':创建文件并写入,如果文件已存在则会产生异常。
'a':追加模式,如果文件已存在则在文件末尾追加内容。
'b':二进制模式(可以与上述模式组合,如 'rb' 或 'wb')。
't':文本模式(默认,通常不需要明确指定)。
'+':表示可以同时读写文件(如 'r+'、'w+'、'a+')。
buffering (可选,默认为 -1):设置缓冲策略。
0 表示无缓冲(仅用于二进制模式)。
1 表示行缓冲(仅用于文本模式)。
大于 1 的值表示缓冲区大小(以字节为单位)。
-1 表示默认缓冲策略。
encoding (可选,用于文本模式):设置文件编码方式,如 'utf-8'。
errors (可选,用于文本模式):设置编码错误的处理方式,如 'ignore'、'replace' 等。
newline (可选,用于文本模式):控制跨平台的新行符。可以是 None、'\n'、'\r'、'\r\n' 或其他任何字符串。
closefd (可选,仅当文件描述符由 opener 提供时有用):如果为 True,则在文件对象被关闭时,底层文件描述符也会被关闭。默认为 True。
opener (可选):一个可调用对象,用于打开文件描述符,如 os.open()。

6.2 关闭文件

使用完文件后,应该及时关闭以释放资源。

文件使用结束后采用close()方法关闭,关闭格式:

python 复制代码
变量名.close()

6.3 文件读取

当文件被打开后,按照打开方式的不同对文件进行相应的读写操作,如果文件用文本文件方式打开,读写按照字符串方式进行操作,使用当前计算机使用的编码或指定编码。

如果用二进制的方式打开,读写按照字节流方式操作。

python 复制代码
1. read(size)
read(size)方法从文件中读取指定数量的字节(或字符,在文本模式下)并返回。如果指定了size参数,则读取指定数量的字节或字符;如果没有指定size或size为负值,则读取并返回整个文件。

示例:

python
with open('example.txt', 'r') as file:  
    content = file.read(10)  # 读取前10个字符  
    print(content)
2. readline()
readline()方法从文件中读取一行,包括行尾的换行符(\n)。如果文件已经读取到末尾,则返回空字符串。这个方法在需要逐行处理文件内容时非常有用。

示例:

python
with open('example.txt', 'r') as file:  
    line = file.readline()  # 读取第一行  
    print(line, end='')  # 输出第一行,并去除默认的换行符  
  
    # 逐行读取并打印文件内容  
    while True:  
        line = file.readline()  
        if not line:  # 如果读取到空字符串,说明文件已读完  
            break  
        print(line, end='')
3. readlines()
readlines()方法读取文件中的所有行,并返回一个包含所有行(作为字符串列表)的列表。每一行都是一个字符串,包括末尾的换行符(\n)。如果文件很大,这个方法可能会占用大量内存,因为它会一次性读取整个文件。

示例:

python
with open('example.txt', 'r') as file:  
    lines = file.readlines()  # 读取所有行到列表中  
  
# 遍历列表并打印每一行  
for line in lines:  
    print(line, end='')

6.4 文件写入

在Python中,文件写入操作通常涉及使用open()函数以写入模式('w'、'a'、'x'等)打开一个文件,并使用文件对象的write()方法将内容写入文件。以下是关于文件写入的详细介绍:

python 复制代码
写入模式
'w': 写入模式,如果文件已存在则会被覆盖,如果文件不存在则创建新文件。
'a': 追加模式,如果文件已存在,则在文件末尾追加内容;如果文件不存在,则创建新文件。
'x': 独占创建模式,如果文件已存在则会产生FileExistsError异常,如果文件不存在则创建新文件。
使用 write() 方法
write()方法用于将字符串写入文件。

python
with open('example.txt', 'w') as file:  # 以写入模式打开文件  
    file.write('Hello, World!\n')  # 写入字符串到文件  
  
with open('example.txt', 'a') as file:  # 以追加模式打开文件  
    file.write('This is an appended line.\n')  # 在文件末尾追加内容

写入其他类型数据

如果需要将非字符串类型的数据(如整数、浮点数、列表等)写入文件,通常需要先将其转换为字符串格式。

python 复制代码
python
with open('numbers.txt', 'w') as file:  
    file.write(str([1, 2, 3, 4, 5]))  # 将列表转换为字符串并写入文件

注意事项

使用with语句可以确保文件在使用完毕后被正确关闭。

写入文件时,如果文件不存在,则会创建新文件;如果文件已存在且使用'w'模式,则会覆盖原有内容。

如果需要在文件末尾追加内容,应使用'a'模式。

6.5 文件系统其他api

Python的os和os.path模块提供了许多与文件系统交互的API,以下是一些常用的API:

python 复制代码
os 模块
os.listdir(path): 列出指定目录下的文件和子目录名。
os.getcwd(): 返回当前工作目录。
os.chdir(path): 改变当前工作目录。
os.mkdir(path): 创建新目录。
os.rmdir(path): 删除空目录。
os.remove(path): 删除文件。
os.rename(old_path, new_path): 重命名文件或目录。
os.path.exists(path): 检查路径是否存在。
os.path.isfile(path): 检查路径是否为文件。
os.path.isdir(path): 检查路径是否为目录。
os.path.getsize(path): 获取文件大小(以字节为单位)。
os.path 模块
os.path模块提供了许多用于处理文件路径的实用函数。

os.path.abspath(path): 返回指定文件的绝对路径。
os.path.basename(path): 返回路径中的文件名。
os.path.dirname(path): 返回路径中的目录名。
os.path.join(path, *paths): 将一个或多个路径组件连接成一个路径名。
os.path.split(path): 将路径拆分为目录名和文件名。
os.path.splitext(path): 将路径拆分为文件名和扩展名。
os.path.isabs(path): 判断路径是否为绝对路径。
os.path.getmtime(path): 返回文件或目录的最后修改时间。
os.path.getatime(path): 返回文件或目录的最后访问时间。
os.path.getctime(path): 返回文件或目录的创建时间(在某些系统上可能是最后修改时间)。
使用这些API可以方便地在Python中进行文件系统的操作。
相关推荐
鸿业远图科技1 小时前
分式注记种表达方式arcgis
python·arcgis
是孑然呀1 小时前
【小记】word批量生成准考证
笔记·学习·excel
别让别人觉得你做不到2 小时前
Python(1) 做一个随机数的游戏
python
辛一一2 小时前
neo4j图数据库基本概念和向量使用
数据库·neo4j
小彭律师3 小时前
人脸识别门禁系统技术文档
python
巨龙之路3 小时前
什么是时序数据库?
数据库·时序数据库
蔡蓝3 小时前
binlog日志以及MySQL的数据同步
数据库·mysql
ll7788114 小时前
C++学习之路,从0到精通的征途:继承
开发语言·数据结构·c++·学习·算法
是店小二呀4 小时前
【金仓数据库征文】金融行业中的国产化数据库替代应用实践
数据库·金融·数据库平替用金仓·金仓数据库2025征文
炒空心菜菜5 小时前
SparkSQL 连接 MySQL 并添加新数据:实战指南
大数据·开发语言·数据库·后端·mysql·spark