python目录遍历和删除指定目录下的pyc文件
来源:互联网 发布:linux shell 权限不够 编辑:程序博客网 时间:2024/04/29 03:53
在提交版本库的时候需要清除工作目录下的pyc文件,在《python cookbook》2.16节中提供了一种遍历目录树并找出指定文件的方法,可以利用这个清除工作目录下的pyc文件。
我做了简单的注释,并在pattern的调用中加入了strip方法以去除其两端的空格,来防止patterns字符串在以分号分割的同时因存在空格而无法匹配的情况。
#!/user/bin/python# -*- coding: utf-8 -*-# Filename: allfile.py# Date:2011-03-26import osimport fnmatchdef all_file(root, patterns='*',single_level=False, yield_folders=False):"""root: 需要遍历的目录patterns: 需要查找的文件,以;为分割的字符串single_level: 是否只遍历单层目录,默认为否yield_folders: 是否包含目录本身,默认为否"""patterns = patterns.split(';')for path, subdirs, files in os.walk(root):if yield_folders:files.extend(subdirs)files.sort()for name in files:for pattern in patterns:if fnmatch.fnmatch(name, pattern.strip()):# 去除pattern两端的空格yield os.path.join(path, name)if single_level:break
os.walk
os.walk是一个generator函数。每次可以得到一个三元tupple,其中第一个为起始路径,第二个为起始路径下的文件夹,第三个是起始路径下的文件。举例如下:
>>> x=os.walk('/home/tiny/workspace/py')>>> x<generator object walk at 0x8ef652c>>>>for i in x:... i... ('/home/tiny/workspace/py', ['2', '1'], ['.allfile.py.swp', 'allfile.py', 'list_get.py', 'test.py', 'tags', 'log.txt'])('/home/tiny/workspace/py/2', [], ['fib.py', 'djcoding.py', 'drectory_travel.py', 'foo.py'])('/home/tiny/workspace/py/1', [], ['timetest2.py', 'timetest.py'])
fnmatch 实现shell风格模式匹配特定字符
- fnmatch.fnmatch( names, pattern):测试name是否匹配pattern,返回true/false。下面的例子列出了当前目录中的所有py文件:
>>>import fnmatch>>>import os>>>for file in os.listdir('.'):... if fnmatch.fnmatch(file, '*.py'):... print file... allfile.pylist_get.pytest.py
如果操作系统是大小写不敏感的,则在fnmatch.fnmatch()中所有的参数将被统一格式为所有大写或所有小写。
>>> files=['tags', 'readme.txt', 'allfile.py', 'test.py']>>> fnmatch.filter(files, '*.py')['allfile.py', 'test.py']>>> fnmatch.filter(files, '[tx]')[]>>> fnmatch.filter(files, '[tx]*')['tags', 'test.py']>>> fnmatch.filter(files, '[tr]*')['tags', 'readme.txt', 'test.py']>>> fnmatch.filter(files, '*[tr]*')['tags', 'readme.txt', 'test.py']>>> fnmatch.filter(files, '?[a]*')['tags']
- fnmatch.fnmatchcase ( names, pattern): 与平台无关的大小写敏感的fnmatch.fnmatch
- fnmatch.filter( names, pattern):实现列表特殊字符的过滤或筛选,返回符合匹配模式的字符列表,例:
注意: [seq] 匹配单个seq中的任意单个字符
- fnmatch.translate(pattern):翻译模式, fnmatch将这种全局模式转换成一个正则式, 然后使用re模块来比较名字和模式。 translate() 函数是一个公共API用于将全局模式转换成正则式。
>>>import fnmatch>>> pattern='*.py'>>>print fnmatch.translate(pattern).*\.py\Z(?ms)
- unix shell风格匹配方式
- *表示匹配任何单个或多个字符
- ?表示匹配单个字符
- [seq] 匹配单个seq中的任意单个字符
- [!seq]匹配单个不是seq中的任意单个字符
回到开始,删除pyc文件
os.remove()可以删除指定文件,参见文档。删除pyc可以在以上遍历的基础上加入代码:if__name__=='__main__':for path in all_file(os.getcwd(),'*.pyc'):print pathos.remove(path)os.getcwd() 是获取当前文件夹,也可以用指定目录代替,如;'\home'.
转载请注明出处:http://www.cnblogs.com/moinmoin/
- python目录遍历和删除指定目录下的pyc文件
- python: 删除当前目录下的所有.pyc、.py~文件
- 遍历某一指定目录下的文件和目录
- python 删除指定目录下的指定名字的文件
- ASP.NET 删除指定目录下的文件和目录
- PHP递归删除指定目录下的文件和目录
- PHP递归删除指定目录下的文件和目录
- PHP递归删除指定目录和目录下的文件
- 遍历指定目录下的所有文件和目录, 以及子目录下的文件和目录
- 新手学Python 删除指定目录下的所有文件
- [python]如何删除目录下指定格式的文件
- VC 遍历指定目录下的文件
- 遍历指定目录下的所有文件
- C# winfrom遍历指定目录下的所有文件,并删除指定文件
- 测试删除指定目录下的文件和文件夹
- 删除指定目录下的所有文件和文件夹
- 删除指定目录下的文件和文件夹
- 删除指定目录下的文件
- 通过左边iFrame内链接打开右边iFrame
- lucene 4.0 小示例
- Android学习笔记15:Frame Animation动画的实现
- unity3d鼠标移动、旋转物体
- ubuntu12.04 配置java环境
- python目录遍历和删除指定目录下的pyc文件
- JSTL表达式
- 水库抽样问题
- tomcat 虚拟目录与显示目录中文件列表
- 关于python class
- 铃音tong script
- Visibility in Bad Weather from a Single Image---2008CVPR ,Tan
- JS的两个妙用
- struct linger 用法