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 小时前
如何使用 Python 开发一个简单的文本数据转换为 Excel 工具
开发语言·python·excel
B站计算机毕业设计超人1 小时前
计算机毕业设计SparkStreaming+Kafka旅游推荐系统 旅游景点客流量预测 旅游可视化 旅游大数据 Hive数据仓库 机器学习 深度学习
大数据·数据仓库·hadoop·python·kafka·课程设计·数据可视化
IT古董2 小时前
【人工智能】Python在机器学习与人工智能中的应用
开发语言·人工智能·python·机器学习
湫ccc2 小时前
《Python基础》之pip换国内镜像源
开发语言·python·pip
hakesashou2 小时前
Python中常用的函数介绍
java·网络·python
菜鸟的人工智能之路2 小时前
极坐标气泡图:医学数据分析的可视化新视角
python·数据分析·健康医疗
菜鸟学Python2 小时前
Python 数据分析核心库大全!
开发语言·python·数据挖掘·数据分析
小白不太白9502 小时前
设计模式之 责任链模式
python·设计模式·责任链模式
喜欢猪猪2 小时前
Django:从入门到精通
后端·python·django
糖豆豆今天也要努力鸭2 小时前
torch.__version__的torch版本和conda list的torch版本不一致
linux·pytorch·python·深度学习·conda·torch