python复制文件显示类型_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\toSave2'

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 不存在,他不会新建文件夹,而是直接将所有的文件复制过去,然后你得到一个没有扩展名的文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值