文档章节

《Python编程快速上手》9.8 实践项目

o
 osc_4nmshwhm
发布于 2018/08/07 01:53
字数 692
阅读 9
收藏 0

精选30+云产品,助力企业轻松上云!>>>

9.8.1 选择性拷贝

 1 # 选择性拷贝,遍历一个目录树,查找特定扩展名的文件,拷贝到新文件夹
 2 import os, re, shutil
 3 
 4 dirTree = input('Enter a directory:\n') # 目录树
 5 extName = input('Enter a extension:\n') # 扩展名
 6 newFile = input('Enter a new file:\n')  # 新文件夹
 7 
 8 regex = re.compile(r'^.*' + extName + '$')
 9 
10 newFile = os.path.abspath(newFile)
11 dirTree = os.path.abspath(dirTree)
12 for foldername, subfolders, filenames in os.walk(dirTree):
13     for filename in filenames:
14         if regex.search(filename):
15             shutil.copy(os.path.join(foldername, filename),newFile)
16 print('Done.')

9.8.2 删除不需要的文件

 1 #! python3
 2 # 删除不需要的文件
 3 # 遍历一个目录树,查找大文件(夹),打印绝对路径
 4 # 出现WinError5可进入管理员模式运行,如果是WinError1920还不清楚...
 5 
 6 import os#,send2trash
 7 dirTree = input('Enter a directory:\n')
 8 filSize = int(input('Enter a size(Mb):\n'))
 9 
10 dirTree = os.path.abspath(dirTree)
11 filSize = filSize*1024*1024
12 
13 
14 for foldername, subfolders, filenames in os.walk(dirTree):
15     for filename in filenames:
16         if os.path.getsize(os.path.join(foldername, filename)) >= filSize:
17             print(os.path.abspath(os.path.join(foldername, filename)))
18             # send2trash.send2trash(os.path.abspath(os.path.join(foldername, filename)))
19 
20 print('Done')

9.8.3 消除缺失的编号

 1 #! python3
 2 # 消除消失的编号
 3 # 在一个文件夹中,找到所有带指定前缀的文件,定位缺失的编号
 4 # 并对所有后面的文件改名,消除缺失的编号
 5 import os, re, shutil
 6 
 7 fpath = input('文件夹:\n')
 8 front = input('前缀:\n')
 9 exten = input('后缀(.xxx):\n')
10 start = input('起始编号:\n')
11 
12 #正则表达式
13 length = len(start)
14 regex = re.compile(r'^' + front + '(\d){' + str(length) + '}' + exten + '$')
15 # 列出文件夹中文件
16 fpath = os.path.abspath(fpath)
17 flist = os.listdir(fpath)
18 start = int(start)
19 # 遍历文件
20 for filename in flist:
21     # 匹配到文件
22     if regex.search(filename):
23         mo = regex.search(filename).group(1)    # 编号赋值到mo
24         if int(mo) != start:                    # 编号缺失
25             print('缺失编号:' + str(start).rjust(length,'0'))
26             p1 = os.path.join(fpath,filename)
27             p2 = os.path.join(fpath,front+str(start).rjust(length,'0')+exten)
28             shutil.move(p1,p2)                  # 改名
29         start += 1
30 print('Done')

附加练习,编写另一个程序,在一些连续编号的文件中,空出一些编号,以便加入新的文件

做这个才发现re.findall()有个关于括号的坑..

 1 #! python3
 2 # 空出编号
 3 
 4 import os, re, send2trash
 5 
 6 fpath = input('文件夹:\n')
 7 front = input('前缀:\n')
 8 exten = input('后缀(.xxx):\n')
 9 number = input('要空出的编号(以空格分隔):\n')
10 number = number.split()
11 #正则表达式
12 length = len(number[0])
13 regex = re.compile(r'(' + front + '(\d){' + str(length) + '}' + exten + ')')
14 # 列出文件夹中文件
15 fpath = os.path.abspath(fpath)
16 flist = os.listdir(fpath)
17 string = ' '.join(flist)
18 # 找到匹配的文件
19 strlist = regex.findall(string)
20 strlist1 = []
21 for i in range(len(strlist)):
22     strlist1 += [strlist[i][0]]
23 # 对每一个要空出的编号遍历
24 for i in range(len(number)):
25     for filename in strlist1:
26         if int(regex.search(filename).group(2)) == int(number[i]):
27             send2trash.send2trash(os.path.join(fpath,filename))
28             break
29 print('Done.')

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

浅谈对python pandas中 inplace 参数的理解

这篇文章主要介绍了对python pandas中 inplace 参数的理解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 pandas 中 inplace 参数在很多函数中都会有,它的作用是:是否...

Linux就该这么学
43分钟前
20
0
C++ 从基本数据类型说起

前言 int 在32位和64位操作系统,都是四个字节长度。为了能编写一个在32位和64位操作系统都能稳定运行的程序,建议采用std::int32_t 或者std::int64_t指定数据类型。*与long随操作系统子长变...

osc_sxdofc9c
43分钟前
9
0
游戏音乐的作用以及起源

游戏音乐是由特殊的音乐、语言符号、美学符号组成,在电子游戏的发展下,游戏音乐越来越成熟,游戏音乐与美术相融合,能够带给玩家视觉与声音的感官冲击,形成游戏音乐所具有的独特的审美效果...

奇亿音乐
44分钟前
10
0
2020,最新Model的设计-APP重构之路

很多的app使用MVC设计模式来将“用户交互”与“数据和逻辑”分开,而model其中一个重要作用就是持久化。下文中设计的Model可能不是一个完美的,扩展性强的model范例,但在我需要重构的app中,...

osc_mfzkzkxi
44分钟前
4
0
面对职业瓶颈,iOS 开发人员应该如何突破?

我们经常看到 iOS 开发人员(各种能力水平都有)的一些问题,咨询有关专业和财务发展方面的建议。 这些问题有一个共同点:前面都会说“我现在遇到了职业困境”,然后会问一些诸如“我是否应该...

osc_gfpedeca
45分钟前
21
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部