【大学生Python】文件与文件路径操作

目录

一、文件的打开、关闭、读取、写入等基础操作。

1、文件的打开、关闭、读取

2、文件的写入:

二、文件的定位读取 

::文件中的内容:

1.tell() 方法:

2.seek()方法

三、文件的复制和重命名

1.文件的复制

2.文件的重命名

四、目录操作

1.创建目录

 2.删除目录

3.获取目录的文件列表

五、文件路径操作

1.相对路径与绝对路径

2.检测路径有效性

3.路径的拼接

六、文件打开匹配模式表

一、文件的打开、关闭、读取、写入等基础操作。

1、文件的打开、关闭、读取

# open(file, mode, buffering, encoding, errors, newline)
# open(文件、模式、缓冲、编码、错误、换行符)

txt_data = open('自定义文本文件.txt', mode='r', encoding='utf-8')  # 打开文件

# txt_data.write('5')  # 用 write 方法 写入数据

# read 方法可以从指定文件中读取指定数据 默认情况是读取全部
# 也可以输入参数,读取指定字节
# 例如 txt_data.read(2) 就是读取两个字节的数据
print(txt_data.read())

txt_data.close()  # 关闭文件

自定义文本文件中的内容:

67cf16d1879e412fbd546402e84fe70c.png

运行结果:

6d9093d77e2f4a8bbaf5b7e471e5f78b.png

2、文件的写入:

# 文件的写入可以用两种方法:1.write() 2.writelines()

# write() 方法可以将字符串写入, 最后返回写入数据的长度

# writelines() 方法用来向文件中写入字符串序列,例如可以传入一个列表的数据,write传入字符串序列会报错

txt_data = open('自定义文本文件.txt', mode='a+', encoding='utf-8')  # 打开文件

# 文件的写入可以用两种方法:1.write()  2.writelines()
# write() 方法可以将字符串写入, 最后返回写入数据的长度
# writelines() 方法用来向文件中写入字符串序列,例如可以传入一个列表的数据,write传入字符串序列会报错

print(txt_data.write('00000'))  # 输出写入数据的长度

str_1 = 'abcde'  # 定义两个字符串
str_2 = 'fghij'
txt_data.writelines(['\n', str_1, ',', str_2])  # 写入一个字符串序列

txt_data.close()  # 关闭文件

 运行完后文本文件中追加的内容:

2a86fc6be76a45a591b76d8f28d62ca6.png

 运行结果:输出了write写入的文件长度

70f8b62e9a8b47b5b8be0b7e7f89cb28.png

二、文件的定位读取 

Python中获取当前文件 读/写位置 以及修改文件 读/写位置 的方法有 tell()和seek()。
 

::文件中的内容:

 2a86fc6be76a45a591b76d8f28d62ca6.png

1.tell() 方法:

tell() 方法用于获取当前文件 读/写 的位置。

# Python中获取当前文件 读/写位置 以及修改文件 读/写位置 的方法有 tell()和seek()。

file = open('自定义文本文件.txt', mode='r', encoding='utf-8')  # 打开文件

# tell() 方法用于获取当前文件 读/写 的位置
print(file.read(3))  # 读取3个字节
print(file.tell())  # 输出文件位置

file.close()

运行结果: 

a36393524e7241f5a52031a7f335f61b.png

2.seek()方法

# Python中获取当前文件 读/写位置 以及修改文件 读/写位置 的方法有 tell()和seek()。

file = open('自定义文本文件.txt', mode='r', encoding='utf-8')  # 打开文件

# seek() 方法用于设置当前文件 读/写位置,其中seek(offset, from)方法有两个参数 offset和from
# 参数 offset 表示偏移量,即 读/写 位置需要移动的字节数
# 参数 from 用于指定文件的 读/写位置,该参数的取值有 0、1、2,它们代表的含义分别是:
# 0:表示在开始位置 读/写  1:表示在当前位置 读/写  2:表示在结尾位置 读/写
file.seek(5, 0)  # 移动到第5个字节,也就是从第6个字节开始读起
print(file.read())

file.close()

运行结果:

注意:因为第六个位置有个换行符,所以输出时是先出现一个空行!

e4079580d29a4431a39be9b3dd9e7d7a.png

三、文件的复制和重命名

1.文件的复制

文件复制的基本流程:打开文件 -> 读取文件内容 -> 创建新文件,将数据写入新文件 -> 关闭文件,保存数据

简单理解就是,创建一个新文件夹,将要复制的文件的内容读取出来后保存到新文件夹而已。

# 文件的复制
# 流程:打开文件 -> 读取文件内容 -> 创建新文件,将数据写入新文件 -> 关闭文件,保存数据
file = open('自定义文本文件.txt', 'r', encoding='utf-8')  # 打开文件
file_info = file.read()  # 读取文件内容
new_file = open('自定义文本文件的_备份.txt', 'w', encoding='utf-8')  # 创建新文件
new_file.write(file_info)  # 写入数据

file.close()  # 关闭文件
new_file.close()  # 关闭新建文件

运行结果:

成功运行过后,会出现一个和原文件相同的文件出来。 

2dfd914824d74847b42d7cdbc324ed7c.png

2.文件的重命名

文件的重命名需要用到 os模块 中的 rename() 函数

其语法为 rename(原文件名, 新文件名)

 注意:待命名的文件必须已经存在,否者解释器会报错!

# 文件的重命名需要用到 os模块 中的 rename() 函数
# 其语法为 rename(原文件名, 新文件名)
import os

# 注意:待命名的文件必须已经存在,否者解释器会报错!
os.rename('重命名前的文件.txt', '重命名后的文件.txt')

创建一个重命名前的文件,当前是该文件重命名前。 

b33bfa32d11343f6a0312ab6347b50c4.png

成功运行后,该文件改名成功

变成 重命名后的文件.txt 

2348d2bb20c54b859fa430b882c02a61.png  

四、目录操作

1.创建目录

 os模块中的mkdir()函数用于创建目录

在新建目录前要先判定该目录存不存在,如果存在还去创建则会报错

# os模块中的mkdir()函数用于创建目录
# 在新建目录前要先判定该目录存不存在,如果存在还去创建则会报错
import os
# os.path.exists() -> 可以判定该目录存不存在, 然后返回一个 bool 值
if os.path.exists('new_dir') is False:  # 如果文件不存在
    os.mkdir('new_dir')  # 创建文件
else:
    print('该目录已存在。')

运行结果:

出现一个 new_dir 的目录。 

430677a5ece84792bd69253368c34656.png

 再次运行后,显示目录已存在。

 36fe497848f5490da5449b570c2ba99d.png

 2.删除目录

Python 内置模块 shutil 中的 rmtree() 函数可以删除目录

利用 os 模块中的 os.path.exists 来判断当前文件下是否有你想要的目录

# Python 内置模块 shutil 中的 rmtree() 函数可以删除目录
import shutil
import os
shutil.rmtree('new_dir')
print(os.path.exists('new_dir'))  # 删除后,目录不存在,返回 False

运行结果:

因为 new_dir 目录被删除了,所以  os.path.exists 返回的值是 False

ebef320ffbfd466d94d071372d82d098.png

3.获取目录的文件列表

os 模块中 listdir() 函数用于获取文件夹下的文件或文件夹名的列表

格式为 os.listdir('文件夹路径')

例如:这是当前文件夹和文件夹的路径,以及文件夹内的文件

73000035d0694d22be43bbe0ecd55fa4.png

# os 模块中 listdir() 函数用于获取文件夹下的文件或文件夹名的列表
# 格式为 os.listdir('文件夹名')
import os

print(os.listdir('G:/School_Program/实例/文件与文件路径操作'))

运行结果:

输出一个列表,列表内的元素是各个文件的名字。 

ea0042b5ed914f55ac6dd20d2c1c980c.png

五、文件路径操作

1.相对路径与绝对路径


文件相对路径指某文件(或文件夹)所在的路径与其他文件(或文件夹)的路径关系,
绝对路径指盘符开始到当前位置的路径。
os模块提供了用于检测目标路径是否是绝对路径的isabs()函数和将相对路径规范化为绝对路径的abspath()函数,

 isabs() 函数 用于检测目标路径是不是绝对路径,当目标路径为绝对路径时,isabs0函数会返回True,否则返回False。

abspath() 函数,当目标路径为相对路径时,可以使用 abspath()函数 将目标路径规范化为绝对路径

# 文件相对路径指某文件(或文件夹)所在的路径与其他文件(或文件夹)的路径关系,
# 绝对路径指盘符开始到当前位置的路径。
# os模块提供了用于检测目标路径是否是绝对路径的isabs()函数和将相对路径规范化为绝对路径的abspath()函数,
import os
# isabs() 函数 用于检测目标路径是不是绝对路径,当目标路径为绝对路径时,isabs0函数会返回True,否则返回False。
# 例如 当前的 python文件 是 相对路径和绝对路径.py
print(os.path.isabs("相对路径和绝对路径.py"))
print(os.path.isabs("G:/School_Program/实例/文件与文件路径操作/相对路径和绝对路径.py"))

# abspath() 函数,当目标路径为相对路径时,可以使用 abspath()函数 将目标路径规范化为绝对路径
print(os.path.abspath('相对路径和绝对路径.py'))

运行结果:

d6d745a5dd924be2a3eaa20c292a069d.png

2.检测路径有效性

os 模块中 exists() 函数用于判断路径是否存在,存在返回True,不存在返回False

# os 模块中 exists() 函数用于判断路径是否存在,存在返回True,不存在返回False
import os
print(os.path.exists('G:/School_Program/实例/文件与文件路径操作/检测路径的有效性.py'))
print(os.path.exists('检测路径的有效性.py'))

运行结果:

7b5e4d35e4bb4a2a9068440d628b72f3.png

3.路径的拼接

os模块中 join() 函数用于拼接路径

最后用 os.path.exists 检测拼接后的路径是否有效,有效则输出 True,无效输出False

# os模块中 join() 函数用于拼接路径
# 语法:os.path.join(路径1[,路径2[,...]])
import os
path_1 = 'G:/School_Program/'
path_2 = '实例/文件与文件路径操作/路径的拼接.py'
splice_path = os.path.join(path_1, path_2)

print(splice_path)
print(os.path.exists(splice_path))  # 检测路径是否有效

 运行结果:

4b4e7d4601a344db8466cbbf010d91ee.png

六、文件打开匹配模式表

文件打开搭配模式
打开模式名称

描述

r/rb只读模式以只读的形式打开文本文件/二进制文件,若文件不存在或无法找到,open()函数将调用失败

w/wb

只写模式以只写的形式打开文本文件/二进制文件,若文件已存在,则重写文件,否则创建文件
a/ab追加模式以只写的形式打开文本文件/二进制文件,只允许在该文件末尾追加数据,若文件不存在,则创建新文件
r+/rb+读取(更新)模式以读/写的形式打开文本文件/二进制文件,如果文件不存在,open()函数调用失败
w+/wb+写入(更新)模式以读/写的形式创建文本文件/二进制文件,若文件已存在,则重写文件
a+/ab+追加(更新)模式以读/写的形式打开文本/二进制文件,但只允许在文件末尾添加数据,若文件不存在,则创建新文件

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值