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 不存在,他不会新建文件夹,而是直接将所有的文件复制过去,然后你得到一个没有扩展名的文件
Python组织文件 实践:拷贝某种类型的所有文件的更多相关文章
- 怎么去掉Xcode工程中的某种类型的警告
XCode警告 问题描述 在我们的项目中,通常使用了大量的第三方代码,这些代码可能很复杂,我们不敢改动他们,可是作者已经停止更新了,当sdk升级或者是编译器升级后,这些遗留的代码可能会出现许许多 ...
- (转)怎么去掉Xcode工程中的某种类型的警告 Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int32
问题描述 在我们的项目中,通常使用了大量的第三方代码,这些代码可能很复杂,我们不敢改动他们,可是作者已经停止更新了,当sdk升级或者是编译器升级后,这些遗留的代码可能会出现许许多多的警告,那么我们有 ...
- 怎么去掉Xcode工程中的某种类型的警告 Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int32
unsigned long numComponents = CGColorGetNumberOfComponents([[UIColor blackColor] CGColor]); 2014年12月 ...
- 怎么去掉Xcodeproject中的某种类型的警告 Implicit conversion loses integer precision: 'NSInteger' (aka 'long') to 'int32
问题描写叙述 在我们的项目中,通常使用了大量的第三方代码,这些代码可能非常复杂,我们不敢修改他们,但是作者已经停止更新了,当sdk升级或者是编译器升级后,这些遗留的代码可能会出现许很多多的警告,那么 ...
- SSH 暴力破解趋势——植入的恶意文件属 DDoS 类型的恶意文件最多,接近70%,包括 Ganiw、 Dofloo、Mirai、 Xarcen、 PNScan、 LuaBot、 Ddostf等家族。此外挂机、比特币等挖矿程序占5.21%
SSH 暴力破解趋势:从云平台向物联网设备迁移 | 云鼎实验室出品 from: http://www.freebuf.com/articles/paper/177473.html 导语:近日,腾讯云发 ...
- Python组织文件 实践:将文件的不同版本备份为ZIP文件
功能:备份文件夹.能将文件的不同版本备份下来,并且每个有不同的名字 #! python3 # backupToZip.py - 备份文件的不同版本到压缩文件中 import zipfile,os #f ...
- python03-break、continue、for循环、数据bytes类型、字符串与字节的关系、变量指向与深浅拷贝、set集合、文件操作
目录: 1.break.continue 2.for循环 3.数据bytes类型 4.字符串与字节的关系 5.变量指向与深浅拷贝 6.set集合 7.文件操作 一.break.continue bre ...
- paip.复制文件 文件操作 api的设计uapi java python php 最佳实践
paip.复制文件 文件操作 api的设计uapi java python php 最佳实践 =====uapi copy() =====java的无,要自己写... ====php copy ...
- 《Python编程从入门到实践》_第十章_文件和异常
读取整个文件 文件pi_digits.txt #文件pi_digits.txt 3.1415926535 8979323846 2643383279 下面的程序打开并读取整个文件,再将其内容显示到屏幕 ...
随机推荐
- C#的常见算法(面试)(转)
一.求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m //方法一,通过顺序规律写程序,同时也知道flag标志位的重要性. static int F1(int m) { ; ...
- 14:Challenge 7(map大法好)
总时间限制: 10000ms 单个测试点时间限制: 1000ms 内存限制: 262144kB 描述 给一个长为N的数列,有M次操作,每次操作是以下两种之一: (1)修改数列中的一个数 (2)求 ...
- String Comparison(C#)
When comparing programmatic strings, you should always use StringComparison.Ordinal or StringCompari ...
- C# 打开文件 保存文件
string path = @"C: \Users\users\Desktop\xxxx.txt";// 文件路径 FileStream filestream = new File ...
- sass的用法小结(一)
1. 使用变量; sass让人们受益的一个重要特性就是它为css引入了变量.你可以把反复使用的css属性值 定义成变量,然后通过变量名来引用它们,而无需重复书写这一属性值.或者,对于仅使用过一 次的属 ...
- 1044 - Access denied for user 'root'@'%' to database 'xahy-blog' 解决方案二
检查 user 表中'root'@'%' 的grant的权限 select HOST,USER,Grant_priv,Super_priv from mysql.`user`; 可以看到现在这两个权限 ...
- vue项目测试和打包发布
在线测试:npm run dev 发布打包:npm run build 打包后,代码文件在dist文件夹下面,可以正式发布了,复制到其它web服务器下面,在浏览器用http访问.
- OpenJDK源码研究笔记(四)-编写和组织可复用的工具类和方法
本篇主要讲解java.util.Arrays这个针对数组的工具类. 1.可复用的工具类和方法. 这个工具类里,包含很多针对数组的工具方法,如 排序.交换.二分查找.比较.填充.复制.hashcode ...
- 嵌入式(C)笔试题
1 读程序段,回答问题 (a) int main(int argc,char *argv[]) { int c=9,d=0; c=c++%5; d=c; printf("d=%d\n&quo ...
- solr在windows下的安装及配置
solr在windows下的安装及配置 首先,solr是基于Java开发的,所以使用的话需要先进行java环境的配置,在Java环境配置好之后就可以去http://www.apache.org/dyn ...