python-文件IO操作实例

一、如何复制文件

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)

运行:

 

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

 

posted @ 2023-12-07 22:39  zhang0513  阅读(13)  评论(0编辑  收藏  举报