1
2
3
4
5
6 import os
7 from types import *
8
9
10
12 if type(argument) in StringTypes:
13 if argument:
14 return [argument]
15 else:
16 return []
17 elif type(argument) is ListType:
18 return argument
19 else:
20 raise TypeError( 'Argument "%s" must be or list of strings or string.' % argument )
21
23 - def __init__(self, file_exts, is_include_exts = True):
24 self.__file_exts = _make_list( file_exts )
25 self.__is_include_exts = is_include_exts
26
28 if not self.__file_exts:
29 return 0
30 file_ext = os.path.splitext( file_path )[1]
31 if not file_ext:
32 file_ext = '.' + file_ext
33 file_ext = '*' + file_ext
34 if file_ext.lower() in self.__file_exts:
35 return not self.__is_include_exts
36 else:
37 return self.__is_include_exts
38
40 files, directories = [], []
41 directory_contents = os.listdir(directory_path)
42 for object_name in directory_contents:
43 object_path = os.path.join(directory_path, object_name)
44 if os.path.isfile( object_path ) and not self._is_to_skip( object_path ):
45 files.append( object_path )
46 elif os.path.isdir( object_path ):
47 directories.append( object_path )
48 else:
49 pass
50 return directories, files
51
53 raise NotImplementedError
54
56 raise NotImplementedError
57
59 raise NotImplementedError
60
62 - def __init__(self, directories, file_ext_filter = '', is_include_filter = True, is_recursive = True):
63 base_files_iterator.__init__(self, file_ext_filter, is_include_filter)
64 self.__directories = _make_list( directories )
65 self.__is_recursive = is_recursive
66 self.__file_generator = None
67
69 directories = self.__directories[:]
70 while directories:
71 sub_directories, files = self._subdirectories_and_files( directories.pop(0) )
72 if self.__is_recursive:
73 for directory in sub_directories:
74 directories.append( directory )
75 for file_os in files:
76 yield file_os
77
79 self.__file_generator = self.__walk()
80 return self
81
83 return self.__file_generator.next()
84
86 self.__file_generator = None
87
88
90 - def __init__(self, directories, is_recursive = 1):
91 self.__directories = []
92 for root in _make_list( directories ):
93 self.__directories.extend( self.__sub_directories( root ) )
94 self.__is_recursive = is_recursive
95 self.__directory_generator = None
96
98 sub_directories = []
99 directory_contains = os.listdir(directory_path)
100 for object_in_directory in directory_contains:
101 full_path = os.path.join(directory_path, object_in_directory)
102 if os.path.isdir( full_path ):
103 sub_directories.append( full_path )
104 return sub_directories
105
107 directories = self.__directories[:]
108 for curr_directory in directories:
109 yield curr_directory
110 if self.__is_recursive:
111 for f in directories_walker( [curr_directory], True ):
112 yield f
113
115 self.__directory_generator = self.__walk()
116 return self
117
119 return self.__directory_generator.next()
120
122 self.__directory_generator = None
123
124
125 if '__main__' == __name__:
126 pass
127
128
129
130
131
132
133
134
135
136
137