第7章 文件操作

第7章 文件操作

7.1 文件的基本概念

在计算机中,文件是存储在磁盘上的数据集合。文件可以包含各种类型的数据,如文本、图像、音频、视频或程序代码。

文件系统通过文件名和文件路径来定位和管理文件。文件名通常包含文件的名称和扩展名(例如 .txt 表示文本文件,.jpg 表示图像文件)。文件路径可以是绝对路径或相对路径。

在编写程序的时候,数据是以二进制的形式存储在内存的,将数据写到磁盘文件的过程称之为持久化

7.1.1 文件的分类

1)纯文本文件

有统一的编码,可以被看做存储在磁盘上的长字符串。常见编码格式有 ASCII、ISO-8859-1、GB2312、GBK、UTF-8、UTF-16 等。

2)二进制文件

没有统一的字符编码,直接由 0 与 1 组成。如图片文件(jpg、png),视频文件(avi)等。

7.1.2 文件的路径

1)相对路径

从当前位置到指定位置的路径。如:./hello_world.py./ 代表当前路径,../ 代表上一级路径。

2)绝对路径

从根目录到指定位置的路径。如:E:/Hello/hello.py

7.2 文件的打开与关闭

1)打开文件

使用 open() 打开或创建文件,该方法执行完毕之后返回的是一个 file 对象。

常用形式:

f = open("test.txt", "w")
模式 说明
r 只读,文件若不存在会报错。默认此模式
w 写入,写入前清空原有数据。文件不存在会创建文件
a 追加写入,在原有数据后追加,文件不存在会创建文件
x 创建新文件并写入,文件若已存在会报错
b 以二进制打开。一般用于非文本文件如图片等
t 以文本模式打开,默认此模式
+ 能读能写

完整形式:

open(
    file,            # 文件路径
    mode="r",        # 文件打开模式
    buffering=-1,    # 缓冲
    encoding=None,   # 文本编码方式,一般用utf8
    errors=None,     # 报错级别
    newline=None,    # 区分换行符
    closefd=True,    # 传入的file参数类型
    opener=None,     # 设置自定义开启器
)

2)关闭文件

f.close()

7.3 文件读写

7.3.1 写数据

# 打开文件
f = open("test.txt", "w")
# 写入数据
f.write("hello world\n")
f.write("nihao python\n")
# 关闭文件
f.close()

7.3.2 读数据

1)read

read([size]) 可以从文件中读取数据,size 表示要读取的数据长度(单位是字节),如果没有传入 size 则读取文件中所有的数据。

f = open("test.txt", "rt")
print(f.read())
f.close()

2)readline

readline([size]) 可以从文件中读取整行数据。

f = open("test.txt", "rt")
print(f.readline())
f.close()

3)readlines

readlines([size]) 读取所有行并返回列表。

f = open("test.txt", "r", encoding="utf-8")
print(f.readlines())
f.close()

7.4 常用函数

函数 说明
file.seek(offset[, from]) 移动偏移量并返回新的绝对位置
file.tell() 返回当前偏移量
file.truncate([size]) 从开头开始截断文件
file.writelines(seq) 将序列中字符串写入文件
file.readable() 如果可以读取文件则返回 True
file.writeable() 如果可以写入文件则返回 True
file.seekable() 如果文件支持随机访问则返回 True
os.rename(old, new) 重命名文件
os.remove(file) 删除文件
os.mkdir(dir) 创建目录,不支持递归创建
os.makedirs(dir) 递归创建目录
os.getcwd() 获取当前路径
os.chdir(dir) 进入指定目录
os.listdir(dir) 获取目录下文件和目录列表
os.rmdir(dir) 删除空目录
os.removedirs(dir) 递归删除空目录
os.path.abspath(path) 将相对路径转换为绝对路径
os.path.basename(path) 获取路径中的文件名部分
os.path.dirname(path) 获取路径中的目录部分
os.path.join(*paths) 拼接多个路径
os.path.split(path) 将路径分割为目录和文件名的元组
os.path.splitext(path) 将路径分割为文件名和扩展名的元组
os.path.exists(path) 判断路径是否存在
os.path.isfile(path) 判断路径是否为文件
os.path.isdir(path) 判断路径是否为目录
os.path.getsize(path) 获取文件的大小(字节)
os.path.getatime(path) 获取文件的最后访问时间
os.path.getmtime(path) 获取文件的最后修改时间

os.walk() 递归遍历目录:

import os
for root, dirs, files in os.walk(os.getcwd()):
    print("当前路径:", root)
    print("目录:", dirs)
    print("文件:", files)
    print()

7.5 案例:文件拷贝

def copyFile(source_file_path, dest_file_path):
    source_file = open(source_file_path, 'rb')
    dest_file = open(dest_file_path, 'wb')
    content = source_file.read(1024)
    while content:
        dest_file.write(content)
        content = source_file.read(1024)
    source_file.close()
    dest_file.close()

copyFile("D:/mv.png", "E:/mv.png")

优化:这种方式可以不用读取整个文件,减小内存压力。

#python3##python八股文#
Python 文章被收录于专栏

本专栏系统讲解 Python 编程,共 17 章,涵盖基础语法、数据结构、函数、面向对象、文件操作、异常处理、高级语法、进程与线程、网络编程、正则表达式等核心知识点,并通过"愤怒的小鸟"和"客户信息管理系统"等实战案例巩固所学。适合零基础入门者及希望系统梳理 Python 知识体系的开发者。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务