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) 重命名文件。
相关推荐
神一样的老师12 分钟前
讯飞星火编排创建智能体学习(二)决策节点
python·学习·低代码·自然语言处理
aimmon1 小时前
深度学习之开发环境(CUDA、Conda、Pytorch)准备(4)
人工智能·pytorch·python·深度学习·conda·cuda
stormsha1 小时前
Java中使用接口实现回调函数的详解与示例
java·开发语言·python
什码情况1 小时前
报数游戏 - 华为OD统一考试(E卷)
java·python·算法·游戏·华为od·笔试·华为od机试
全职计算机毕业设计2 小时前
基于深度学习的数字识别系统的设计与实现(python、yolov、PyQt5)
人工智能·python·深度学习
Lee_SmallNorth2 小时前
基于Dockerfile打包算法镜像
python·docker
IT_Beijing_BIT2 小时前
Python库matplotlib之二
开发语言·python·matplotlib
沪上小姐2 小时前
python函数综合应用--银行小程序
python
九圣残炎2 小时前
【Python游戏开发】扫雷游戏demo
python·游戏·mu编辑器