• Python组织文件 实践:拷贝某种类型的所有文件


    #! python3
    #chapter09-test01- 遍历目录树,查找特定扩展名的文件不论这些文件的位置在哪里,都将他们
    #拷贝到一个新的文件夹中
    
    import os,shutil,pprint
    
    
    #寻找指定文件夹内的某种类型的文件
    #返回匹配文件的绝对地址的一个列表
    #folder-指定的文件夹地址
    #fileType-要查找类型的扩展名
    def findFileType(fileType,folder):
        matchFileAbs=[] #用于存放查到的文件绝对地址
        #使用walk()遍历目录树
        for foldername,subfolders,filenames in os.walk(path):
            #遍历这个文件名列表,然后匹配扩展名
            for filename in filenames:
                extensionName=os.path.splitext(filename)
                if extensionName[1]==fileType:
                    #获取绝对路径,然后拷贝
                    fileAbsPath=os.path.join(foldername,filename)
                    fileAbsPath=os.path.abspath(fileAbsPath)
                    matchFileAbs.append(fileAbsPath)
        return matchFileAbs
    
    #拷贝文件
    #srcfileAbs-一个包含文件地址的列表
    #desFolder-指定用来存放的文件夹
    def copyFile(srcfileAbs,desFolder):
        for srcPath in srcfileAbs:
            shutil.copy(srcPath,desFolder)
    
    #为了避免出现目标文件夹不存在而copy()又不会创建文件夹造成复制失败的情况
    #定义一个函数,他能让指定的地址存在
    def presence(path):
        if not os.path.exists(path):
            os.makedirs(path)
    
    desFolder=r'.forTest	oSave2'
    path=r'.forTest'     
    matchFileAbs=findFileType('.txt',path)
    presence(desFolder)
    copyFile(matchFileAbs,desFolder)
    

      

    关于遍历文件和获取文件名怎么解决

      首先想的是使用 os.walk() 还是用 os.listdir() 的组合,使用 os.walk() 返回数据当中的当前文件夹,然后对其使用 os.listdir() 获取文件名;写完后又发现这样太臃肿了,明明 os.walk() 就能返回当前文件夹下的文件名,遂改回来了

    遇到的问题

      1)忘记了 os.path.splitext(path) 返回的是一个包含文件名与扩展名元组,还以为他只返回一个扩展名的字符串

      2)在函数内部对全局变量操作时,我想到了这样是不行的,并进行了测试。完事后有个想法,能不能把这种改错方式迁移到修改Bug的过程中,既能够想到,又能够做到在该BUG的时候去溯源

      3)虽然这个程序很简单,但我这次编写非常顺利,且逻辑清晰,还是离不开“关注主要的”这个思想

      4)有的可以用相对地址,有的能用绝对地址 不严谨

      5)发现 shutil.copy(src,des) 假如 des 不存在,他不会新建文件夹,而是直接将所有的文件复制过去,然后你得到一个没有扩展名的文件

  • 相关阅读:
    每位设计师都应该拥有的50个CSS代码片段(下)
    每位设计师都应该拥有的50个CSS代码片段(上)
    canvas基础——绘制简单的图形
    HTML5——canvas基础
    link和@import的有何区别应如何选择
    火焰灯效果导航菜单
    简单的 Jquery 下拉菜单Demo
    git多人协作冲突解决方法
    搭建iis本地测试服务器
    HTML5 <template>
  • 原文地址:https://www.cnblogs.com/Gaoqiking/p/10466044.html
Copyright © 2020-2023  润新知