首页 > 编程语言 >python-文件IO操作实例

python-文件IO操作实例

时间:2023-12-07 22:45:00浏览次数:53  
标签:文件夹 文件 IO python 实例 file path os name

一、如何复制文件

  • 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

相关文章

  • 初中英语优秀范文100篇-020My Passion for Cooking-我对烹饪的热情
    PDF格式公众号回复关键字:SHCZFW020记忆树1IbegantolikecookingwhenIwasveryyoung.翻译我从很小的时候开始喜欢烹饪简化记忆烹饪句子结构这个句子的主要结构是简单的过去时态,表达了过去某个时间点开始喜欢烹饪的情况。以下是这个句子的详细分析:主语:I(我)......
  • 聪明办法学Python 选学02
    聪明办法学Python学习笔记调试Debug1.如何进行Python程序调试,包括调试理论和常用模块与库的使用调试的必要性在于程序可能出现不符合预期结果的情况调试的困难在于bug的触发原因多种多样,只能看到最终结果2.调试代码的基本思路和方法,包括利用print和断言来解决简单......
  • Python-xlrd读取Excel指定列a~b行数据并绘图
    importxlrd#读取Excel文件wb=xlrd.open_workbook(r"E:\PythonStudyAll\TestD20231130\1111.xlsx")data=wb.sheet_by_name('Sheet1')#定义要读取的列和行范围column_index_x=0#第一列的索引为0column_index_y=1#第一列的索引为0start_row=2#起始行索......
  • 聪明办法学python最后一集
    聪明办法学python最后一集关于程序员如何进行debug首先编程哲学机器永远是对的可以使用print进行一部分的实验(这也算是我经常使用的方法)断点调试就是从上向下执行时进行的判断bug位置断点这个地方,主要分为两步:「找断点」和「打断点」。找断点,就是你想调试的代码块的......
  • 【Python】【OpenCV】检测直线和圆
     重新理解一下Canny方法:参数:image:输入的图像。threshold1:第一个阈值,用于检测边缘的强度梯度的下限。threshold2:第二个阈值,用于检测边缘的强度梯度的上限。apertureSize:Sobel算子的大小,可选值为3、5、7,默认值为3。L2gradient:一个布尔值,指示是否使用更精确的L2范数计算梯度......
  • 聪明办法学python第5次笔记打卡
    Debugging关于debug的方法1.使用print语句打印变量的值2.使用assert语句判断程序的错误3.使用pdb模块,(Python的调试器)可以在程序中设置断点,单步调试4.使用IDE的内置调试器5.向人工智能求助常见错误1.缩进错误切忌tab和空格混用2.语法错误3.命令错误使用了未定义的函......
  • 聊聊如何为python程序 debug
    开始调试之前摆正心态一、调理论的简单介绍1、调试理论“软件”的两层含义·人类需求在信息世界的投影    理解错需求→bug·计算过程的精确(数学)描述     实现错误→bug2、调试困难的根本原因因为bug的触发经历了漫长的过程·需求→设计→代码(状态机)→F......
  • python notebook
    python(11.20--12.7)配置python环境:下载:anaconda在清华大学开源软件镜像站中选择合适的镜像进行下载。anaconda的存在和作用:要使用anaconda不妨先了解anaconda是什么,做什么。首先要知道,anaconda的存在必然有其存在的社会条件,现如今的python拥有众多版本,他们可以满足使用者不......
  • 聪明办法学python(5)
    聪明办法学python(5)debug调试方法print调试:将程序分段后添加print,锁定问题发生地assert调试:表达式是否成立ide调试:查看报错CV工程师:向人工智能求助常见报错缩进错误(IndentationError)切忌tab和空格混用语法错误(GrammarError)命令错误(CommandError)使用了未定义的函数......
  • Python NumPy 数组索引和切片
    1、普通索引普通索引是指使用单个整数或整数列表来索引数组中的元素。1)单个元素索引要访问NumPy数组的单个元素,可以使用单个整数索引。索引从0开始,表示数组的第一行第一个元素。2)多维元素索引2、高级索引高级索引允许使用布尔值或数组来索引数组中的元素。1)布尔索引布......