Python(七)- 文件操作

目录

文件操作

打开文件

读数据

写数据

关闭文件

文件读写实例

文件写

文件读

读数据类型

备份文件

os模块

目录的具体操作


文件操作

在Python中操作文件记录信息的步骤:

python 复制代码
(1)打开文件,或新建一个文件; open()
(2)读取或写入数据内容; read() / write()
(3)关闭文件。 close()

打开文件

函数名 含义
open(name, mode) 创建一个新文件或打开一个已经存在的文件,name指的是文件名,mode指的是访问模式。

常见的mode访问模式有:

模式 描述
r 以读数据的方式打开文件,这是默认模式,可以省略。
rb 以读二进制原始数据的方式打开文件。
w 以写数据的方式打开文件。如果文件已存在,则打开文件写入数据是会覆盖原有内容。如果文件不存在,则创建新文件。
wb 以写二进制原始数据的方式打开文件。
a 使用追加内容形式,打开一个文件。通常用于写数据,此时会把新内容写入到已有内容后。

说明:

(1)访问模式r表示read,即读;

(2)访问模式w表示write,即写。

读数据

该文件必须存在

函数名 含义
read() 从某文件中,一次性读完整的数据。
readlines() 按行的方式把文件中的完整内容进行一次性读取,并返回一个列表。
readline() 一行一行读文件中的数据内容。

说明:

当访问模式有r时,可以读数据。

写数据

函数名 含义
write(seq) 给某文件写数据。

说明:

(1)当访问模式有w时,可以写数据;

(2)当使用访问模式a时,用于追加数据内容,也可以写入数据。

关闭文件

函数名 含义
close() 关闭文件。

文件读写实例

文件写

python 复制代码
# 1 普通写
# # 1.1 打开文件
writer = open("./file/a_hello.txt", "w") # 默认写, 覆盖效果
#
# # 1.2 操作文件
writer.write("hello")
writer.write("\nworld")
#
# # 1.3 关闭文件
writer.close()

# 2 写 追加
# # 2.1 打开文件
writer = open("./file/a_hello.txt", "a") # a, append 追加
#
# # 2.2 操作文件
writer.write("\nhello python")
writer.write("\nhello hadoop")

# # 2.3 关闭文件
writer.close()

# 3 写 中文
# # 3.1 打开文件
writer = open("./file/a_hello.txt", "w", encoding="utf-8") # a, append 追加
#
# # 3.2 操作文件
writer.write("黑马程序员")
writer.write("\n传智播客")
#
# # 3.3 关闭文件
writer.close()

# 4 简化
with open("./file/b_hello.txt", "w", encoding="utf-8") as writer:
    writer.write("黑马程序员")
    writer.write("\n传智播客")
    writer.write("\n字节跳动")

文件读

python 复制代码
# # 1.2 读取文件
content = reader.read()
print(content)
#
# # 1.3 关闭文件
reader.close()

# 2 读 中文
# # 2.1 打开文件
reader = open("./file/b_hello.txt", 'r', encoding='utf-8')
#
# # 2.2 读取文件
content = reader.read()
print(content)
#
# # 2.3 关闭文件
reader.close()

读数据类型

函数名 含义
readlines() 按行的方式把文件中的完整内容进行一次性读取,并返回一个列表。
readline() 一行一行读文件中的数据内容。
read() 从某文件中,一次性读完整的数据。
python 复制代码
# 3 读 简化
with open("./file/b_hello.txt", 'r', encoding='utf-8') as reader:
    content = reader.read()
    print(content)

# 4 读 一次读取所有的行
with open("./file/b_hello.txt", 'r', encoding='utf-8') as reader:
    lines = reader.readlines()
    print(lines)
    print(type(lines))
    print("-" * 50)

    for line in lines:
        print(line, end='')

# 5 读 一次读取一行
with open("./file/b_hello.txt", 'r', encoding='utf-8') as reader:
    line = reader.readline()
    print(line, end="")
    print(type(line))
    print(len(line))
    print("-" * 50)

    line = reader.readline()
    print(line, end="")
    print(type(line))
    print(len(line))
    print("-" * 50)

    line = reader.readline()
    print(line, end="")
    print(type(line))
    print(len(line))
    print("-" * 50)

    line = reader.readline()
    print(line, end="")
    print(type(line))
    print(len(line))
    print("-" * 50)

    line = reader.readline()
    print(line, end="")
    print(type(line))
    print(len(line))
    print("-" * 50)

# 5.2 读 优化 一次读取一行
with open("./file/b_hello.txt", 'r', encoding='utf-8') as reader:
    while True:
        line = reader.readline()

        if len(line) == 0:
            break

        print(line, end='')

备份文件

将原文件的数据内容进行重新写入到另一个新文件中。

python 复制代码
# 目标6: r vs rb 的区别
with open("./file/b_hello.txt", 'r', encoding='utf-8') as reader:
    content = reader.read()
    print(content)
    print(type(content))

print("-" * 100)

with open("./file/b_hello.txt", 'rb') as reader:
    content = reader.read()
    print(content)
    print(type(content))

# 目标7: 备份
with open("./file/b_hello.txt", 'r', encoding='utf-8') as reader, open("./file/b_hello[备份].txt", 'w', encoding='utf-8') as writer:
    # 合并式
    # writer.write(reader.read())

    # 分解式
    content = reader.read()
    writer.write(content)

with open("./file/c.mp4", 'rb') as reader, open("./file/c[备份].mp4", 'wb') as writer:
    # 合并式
    # writer.write(reader.read())

    # 分解式
    content = reader.read()
    writer.write(content)

os模块

Python中的os模块包含有操作系统所具备的功能,如查看路径、创建目录、显示文件列表等。

导入os模块

import os

在Python中,os模块的常用函数分为两类:

(a)通过os.path调用的函数

(b)通过os直接调用的函数

在Python的os模块中,通过os.path常用函数:

函数名 含义
exists(pathname) 用来检验给出的路径是否存在。
isfile(pathname) 用来检验给出的路径是否是一个文件。
isdir(pathname) 用来检验给出的路径是否是一个目录。
abspath(pathname) 获得绝对路径。
join(pathname,name) 连接目录与文件名或目录。
basename(pathname) 返回单独的文件名。
dirname(pathname) 返回文件路径。
python 复制代码
# (1)在某目录下手动新建day05/file目录与day05/file/hello.txt文件;
# (2)判断file/hello.txt是否存在、是否是文件、是否是目录、获取绝对路径名、获取单独的文件名;
# (3)执行程序,观察效果。
import os
#
# path = "./file/a_hello.txt"
path = "D:/0000_资料分享/01_大数据/07_python/代码/pythonProject3/pythonProject_2/day05/file/a_hello.txt"
#
print(os.path.exists(path)) # True
print(os.path.isfile(path)) # True
print(os.path.isdir(path)) # False
#
print(os.path.abspath(path)) # D:\0000_资料分享\01_大数据\07_python\代码\pythonProject3\pythonProject_2\day05\file\a_hello.txt
print(os.path.basename(path)) # a_hello.txt
print(os.path.dirname(path)) # ./file

import os

# (1)获取当前工作目录;
print(os.getcwd()) # D:\0000_资料分享\01_大数据\07_python\代码\pythonProject3\pythonProject_2\day05

# (2)获取day05/file下的文件或目录列表信息;
path = "./file"
result = os.listdir(path)
print(result)
print(type(result))
for e in result:
    print(e)

# (3)思考:若要在file下新建hello/world/python目录,该怎么做呢?
path = "./file/hello/world/python"

if not os.path.exists(path):
    os.makedirs(path)

目录的具体操作

函数名 含义
getcwd() 获得当前工作目录,即当前Python脚本工作的目录路径。
system(name) 运行shell命令。
listdir(path) 返回指定目录下的所有文件和目录名,即获取文件或目录列表。
mkdir(path) 创建单个目录。
makedirs(path) 创建多级目录。
remove(path) 删除一个文件。
rmdir(path) 删除一个目录。
rename(old, new) 重命名文件。
相关推荐
紫雾凌寒1 小时前
计算机视觉 |解锁视频理解三剑客——TimeSformer
python·深度学习·神经网络·计算机视觉·transformer·timesformer
程序员杰哥2 小时前
测试用例详解
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
go54631584657 小时前
本地部署 GitHub 上的 Python 人脸识别项目
开发语言·python·github
FreakStudio8 小时前
手把手教你用 MicroPython 玩转幻尔串口舵机,代码+教程全公开
python·嵌入式·大学生·面向对象·技术栈·电子diy·电子计算机
tekin8 小时前
基于 Python 开发在线多人游戏服务器案例解析
服务器·python·游戏·在线多人游戏服务器
让学习成为一种生活方式10 小时前
libGL.so.1: cannot open shared object file: No such file or directory-linux022
linux·开发语言·python
java1234_小锋11 小时前
一周学会Flask3 Python Web开发-Jinja2模板继承和include标签使用
python·flask·flask3
图书馆钉子户11 小时前
from flask_session import Session 为什么是Session(app)这么用?
python·flask·mybatis
一只蜗牛儿11 小时前
Sherpa-ONNX:说话人识别与语音识别自动开启(VAD)+ Python API 完整指南
人工智能·python·语音识别
结衣结衣.11 小时前
【OpenCV】入门教学
图像处理·人工智能·python·opencv