您的位置:首页 > 编程语言 > Python开发

Python 读取指定目录下的所有子目录及所有文件

2017-05-24 14:34 826 查看
借鉴的   http://blog.csdn.net/pipisorry/article/details/46972171    但是他的代码有些问题。  在此更改后发出

扫描指定目录下的文件,或者匹配指定后缀和前缀的文件。

如果要扫描指定目录下的文件,包括子目录,调用scan_files("/export/home/test/")<
4000
/p>
如果要扫描指定目录下的特定后缀的文件(比如jar包),包括子目录,调用scan_files("/export/home/test/", postfix=".jar")

如果要扫描指定目录下的特定前缀的文件(比如test_xxx.py),包括子目录,调用scan_files("/export/home/test/", prefix="test_")

# -*- coding:utf8 -*-
import os
class ScanFile(object):
def __init__(self, directory, prefix=None, postfix=None):
self.directory = directory
self.prefix = prefix
self.postfix = postfix

def scan_files(self):
files_list = []
for dirpath, dirnames, filenames in os.walk(self.directory):
'''''
dirpath is a string, the path to the directory.
dirnames is a list of the names of the subdirectories in dirpath (excluding '.' and '..').
filenames is a list of the names of the non-directory files in dirpath.
'''
for special_file in filenames:
if self.postfix:
if special_file.endswith(self.postfix): # 判断一个字符的结尾是否是某字符   Python 内置函数 endswith()
files_list.append(os.path.join(dirpath, special_file))
elif self.prefix:
if special_file.startswith(self.prefix): # 判断一个字符的开始是否是某字符   Python 内置函数 endswith()
files_list.append(os.path.join(dirpath, special_file))
else:
files_list.append(os.path.join(dirpath, special_file))

return files_list

def scan_subdir(self):
subdir_list = []
for dirpath, dirnames, files in os.walk(self.directory):
subdir_list.append(dirpath)
return subdir_list

if __name__ == "__main__":
dir = r"/home/djl/project/s" #需要扫描的文件路径
scan = ScanFile(dir, postfix=".py")
subdirs = scan.scan_subdir()
files = scan.scan_files()

print u"扫描的子目录是:"
for subdir in subdirs:
print subdir

print u"扫描的文件是:"
for file in files:
print file

print '--------------------------'
print files
print '--------------------------'


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐