2.5 - 文件和目录

2.5.1 文件

  python中的文件,从编码格式的角度,分为:二进制文件文本文件。文本文件包含:txt,html,json等。二进制文件包含:图片,音频,视频等。

文本文件可以通过二进制的方式读写,但是二进制文件未必能够用文本文件的方式读写。

2.5.2 文件读取和路径操作

  1) 读文件

# mode:读r,写w,以二进制方式b,读写+
with open(r'./book.txt', mode='rb+') as file:
    print(file.readline())  # 读取一行

# encoding:以 utf-8 的方式编码解码
with open(r'./book.txt', mode='r+', encoding='utf-8') as file:
    print(file.readlines())  # 读取所有行

  以 with 的方式打开一个文件读写流,该结构执行完后会自动关闭,不用手动调用 .close() 方法关闭文件流。

  2)路径操作

# 路径操作
import os

# 返回当前工作目录
print(os.getcwd())
# 返回某个path下的文件和目录
print(os.listdir(os.getcwd()))

# 创建单级目录
os.mkdir(r'./Dir1')
# 递归创建多级目录,exist_ok=True时,如果中间目录存在不会报错,exist_ok=False时,如果中间目录存在会报错。
os.makedirs(r'./Dir1/Dir2/Dir3/Dir4', exist_ok=True)
# 删除path对应的文件
os.remove(r'./book.txt')
# 删除path对应的多级空目录
os.removedirs(r'./Dir1/Dir2/Dir3/Dir4')


# os.path.dirname()  + os.path.basename() => 文件的完整目录(相对路径 或 绝对路径)
path = './Dir1/p11.py'
os.path.exists(path)  # 判断path路径是否存在
dirname, basename = os.path.split(path)  # 返回一个元组 (dirname, basename)
os.path.dirname(path)
os.path.basename(path)
os.path.join(dirname, basename)

  一个文件的路径包含两部分: dirname + basename。

  3)灵活读取文件a.txt到文件b.txt

import os

dir_name = r'./'    # 读取文件所在目录
base_name1 = r'book.txt'    # 读取文件名
dest_name = r'./book_cp.txt'    # 复制文件path

src_path = os.path.join(dir_name, base_name1)
d_name, b_name = os.path.split(dest_name)

# 预处理复制文件的路径
if not os.path.exists(d_name):
    os.makedirs(d_name, exist_ok=True)

if os.path.exists(src_path):
    fw = open(dest_name, mode='a', encoding='utf-8')
    with open(src_path, mode='r', encoding='utf-8') as file:
        for line in file:
            fw.write(line)
    fw.close()

 

posted @ 2024-01-30 23:15  橘子葡萄火龙果  阅读(9)  评论(0编辑  收藏  举报