欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python中对文件和文件夹的操作

程序员文章站 2022-05-14 22:55:48
...

一、说明

  python中主要通过os模块和shutil模块两个模块对文件进行相关操作,移动、复制、删除、重命名。比较大的文件通过命令操作可以节省时间,提高效率。

二、实例对文件夹中文件的拷贝

from multiprocessing import Pool,Manager
import os
#完成拷贝文件
def copyFile(filename,oldname,newname,que):
	"拷贝文件函数"
    # 三部操作  读取内容,写入内容  关闭
	que.put(filename)
	br = open(oldname+'/'+filename,'rb')
	bw = open(newname+'/'+filename,'wb')
	content = br.read()
	bw.write(content)
#关闭源文件和目标文件
	br.close()
	bw.close()

def fun():
    #1、提示输入要拷贝的文件名字
    oldname = input("请输入你要拷贝的文件夹名字或者路径:")
    #2.创建文件夹,存放拷贝内容
    newname = oldname + '拷贝内容'
    os.mkdir(newname)
    #3.获取oldname中的目录和文件名字
    filenames = os.listdir(oldname)
    print(filenames)
    # #4.过滤文件
    # filename = solute(filenames)
    #利用多进程的方式拷贝数据
    po = Pool(5)   #进程数量
    que = Manager().Queue()   
    for fileName in filenames:   
        po.apply_async(copyFile,args=(fileName,oldname,newname,que))
    con = 0
    allcon = len(filenames)
    while True:#用主进程来显示拷贝进度
        dd = que.get()
        con +=1
        print('拷贝进度:%.2f%%'%((con/allcon)*100),end='')
        if con==allcon:
            print("恭喜你拷贝完成")
            break
if __name__=='__main__':
	fun()

  

 

三、文件、文件夹的移动、复制、删除、重命名函数

  • 导入shutil模块和os模块

      import shutil,os
    
  • 复制单个文件

      shutil.copy("C:\\a\\1.txt","C:\\b")
    
  • 复制并重命名新文件

      shutil.copy("C:\\a\\2.txt","C:\\b\\121.txt")
    
  • 复制整个目录(备份) shutil.copytree("C:\a","C:\b\new_a")

  • 删除文件

      os.unlink("C:\\b\\1.txt")
      os.unlink("C:\\b\\121.txt")
    
  • 删除空文件夹

      try:
      	os.rmdir("C:\\b\\new_a")
      except Exception as ex:
      	print("错误信息:"+str(ex))#提示:错误信息,目录不是空的
    
  • 删除文件夹及内容

      shutil.rmtree("C:\\b\\new_a")
    
  • 移动文件

      shutil.move("C:\\a\\1.txt","C:\\b")
    
  • 移动文件夹

      shutil.move("C:\\a\\c","C:\\b")
    
  • 重命名文件

      shutil.move("C:\\a\\2.txt","C:\\a\\new2.txt")
    
  • 重命名文件夹

      shutil.move("C:\\a\\d","C:\\a\\new_d")