python-文件IO操作实例

发布时间 2023-12-07 22:44:02作者: zhang0513

一、如何复制文件

  • 1、使用shutil模块来复制

  • import shutil  #导入shutil模块
    #定义源文件和目的文件的路径
    #图片
    src_path = "E:/python/py/基础篇/01_基础/06_文件操作/图片.jpg"
    dst_path = "D:/图片.jpg"
    
    #文本
    src1_path = "E:/python/py/基础篇/01_基础/06_文件操作/人名单.txt"
    dst1_path = "D:/名单.txt"
    #复制文件
    shutil.copy(src_path,dst_path)
    shutil.copy(src1_path,dst1_path)
    shutil.copy2(src_path,dst_path)
    shutil.copy2(src1_path,dst1_path)

    需要注意的是,如果目标文件已经存在,copy函数将会覆盖目标文件。如果你希望保留目标文件的同时进行复制,可以使用copy2函数

  2、OS模块复制文件

import os

# 定义源文件和目标文件的路径
src_path = "path/to/source/file.txt"
dst_path = "path/to/destination/file.txt"

# 复制文件
os.system(f"cp {src_path} {dst_path}")

在使用OS模块复制文件时,如果目标文件已经存在,将会覆盖目标文件。如果你希望保留目标文件的同时进行复制,可以先使用OS模块的exist函数检查目标文件是否存在

3、用open的read和write操作来复制

##定义源文件和目的文件的路径
src_path = "E:/python/py/基础篇/01_基础/06_文件操作/人名单.txt"
dst_path = "D:/人名单.txt"
#打开源文件和目标文件
with open(src_path,"r")as src,open(dst_path,"w")as dst:
#读取源文件并写入目标文件
data = src.readlines()
for line in data:
if line.startswith(""):
line = line.replace("","")
dst.write(line)
# dst.write(data)

二、文件目录操作

# os.remove("D:/人名单.txt")
# os.remove("D:/图片.jpg")
os.rename("D:/人名单.txt","D:/人名单2.txt")

 

  •  判断是否存在
    os.path.exists("goal")
  • 判断文件夹是否存在

 

#2、判断文件夹是否存在
dis ='E:/python123'
if not os.path.exists(dis):
    os.makedirs(dis)   #创建文件夹
  •   创建文件夹
    os.mknod("test.txt")     # 创建空文件
    os.mkdir("file")         # 创建文件夹
  •   复制文件夹

 

shutil.copyfile("oldfile", "newfile")     # oldfile和newfile都只能是文件
shutil.copy("oldfile", "newfile")         # oldfile只能是文件夹,newfile可以是文件,也可以是目标目录
shutil.copytree("olddir", "newdir")     # olddir和newdir都只能是目录,且newdir必须不存在

 

  •   删除文件夹

 

os.remove("file")
os.rmdir("dir")         # 只能删除空目录
shutil.rmtree("dir")     # 空目录、有内容的目录都可以删

 

 

三、实例

  1、批量创建文件夹,并命名

import os
import time
file_path = os.path.abspath("E:/python123")
for i in range(1,100):
    name = "{}组图片".format(i)
    file_name = file_path + "\\" + name
    os.makedirs(file_name)

如果文件夹已存在,运行会报错 

2、批量创建并命名

import os
path = r'E:\python123\\'
name = [
    'L20QD003',
    'L20QD004',
    'L20QD005',
    'L20QD007'
]
for i in name:
    file_name = str(i)
    dir_name = path + file_name
    if file_name not in os.listdir(path):  # 文件夹名称不存在才创建
        os.mkdir(dir_name)

用列表中的元素来当做文件夹名称,可以自定义、或自动生成

3、利用python对文件进行批量命名

  • 需求:文件夹中有多组照片或文件,需要对其名称进行修改
  •  

    import os
    import re
    """批量修改文件夹的图片名"""
    def ReFileName(dirPath,pattern):
        """
        :param dirPath: 文件夹路径
        :pattern:正则
        :return:
        """
        # 对目录下的文件进行遍历
        i = 1
        for file in os.listdir(dirPath):
            # 判断是否是文件
            if os.path.isfile(os.path.join(dirPath, file)) == True:
               #c= os.path.basename(file)
               newName = re.sub(pattern, str(i) + ".jpg", file)
               newFilename = file.replace(file, newName)
               # 重命名
               #os.path.join(path1,path2,*) path1 初始路径。
               #path2 需要拼接在其后的路径。初始路径文件夹下的文件或文件夹。可以有多个需要拼接的参数,依次拼接
               os.rename(os.path.join(dirPath, file), os.path.join(dirPath, newFilename))
               i+=1
        print("图片名已全部修改成功")
    if __name__ == '__main__':
        dirPath = r"C:\Users\zhangpeng\Desktop\照片"
        pattern = re.compile(r'.*')
        ReFileName(dirPath,pattern)

    运行:

     

  • 还是存在点问题,后续再解决