一、如何复制文件
-
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)
运行:
- 还是存在点问题,后续再解决
标签:文件夹,文件,IO,python,实例,file,path,os,name From: https://www.cnblogs.com/zp513/p/17883961.html