3
3
import argparse
4
4
from progress .bar import Bar
5
5
6
+
6
7
class FileSearch :
7
8
def __init__ (self ):
8
9
self .file_count = 0
9
10
self .progress_bar = Bar ('Searching' , suffix = '%(eta)ds' )
10
11
11
12
def get_file_count (self , path , is_folder ):
12
-
13
+
13
14
if not is_folder :
14
15
print ("[INFO] Reading files ..." )
15
16
else :
16
17
print ("[INFO] Reading folders ..." )
17
-
18
+
18
19
self .file_count = 0
19
20
for root , dirs , files in os .walk (path ):
20
21
if is_folder :
21
22
self .file_count += len (dirs )
22
23
else :
23
24
self .file_count += len (files )
24
25
25
- def __recursive_check (self , search_term , start_dir , is_folder , disable_case , show_bar ):
26
+ def __perform_search (
27
+ self ,
28
+ search_term ,
29
+ start_dir ,
30
+ is_folder ,
31
+ disable_case ,
32
+ show_bar
33
+ ):
26
34
results = []
27
35
for root , dirs , files in os .walk (start_dir ):
28
36
if is_folder :
@@ -48,7 +56,14 @@ def __recursive_check(self, search_term, start_dir, is_folder, disable_case, sho
48
56
49
57
return results
50
58
51
- def search (self , search_term , start_dir , is_folder = False , disable_case = False , show_bar = True ):
59
+ def search (
60
+ self ,
61
+ search_term ,
62
+ start_dir ,
63
+ is_folder = False ,
64
+ disable_case = False ,
65
+ show_bar = True
66
+ ):
52
67
self .file_count = 0
53
68
self .get_file_count (start_dir , is_folder )
54
69
self .progress_bar .max = self .file_count
@@ -57,33 +72,74 @@ def search(self, search_term, start_dir, is_folder=False, disable_case=False, sh
57
72
raise Exception (f"Path { start_dir } does not exist." )
58
73
59
74
start_time = datetime .datetime .now ()
60
- result = self .__recursive_check (search_term , start_dir , is_folder , disable_case , show_bar )
75
+ result = self .__perform_search (
76
+ search_term ,
77
+ start_dir ,
78
+ is_folder ,
79
+ disable_case ,
80
+ show_bar
81
+ )
61
82
end_time = datetime .datetime .now ()
62
83
63
84
if not is_folder :
64
- print (f"\n \n [INFO] Searched { self .file_count :,} files in { (end_time - start_time ).total_seconds ()} seconds" )
85
+ print (
86
+ f"\n \n [INFO] Searched { self .file_count :,} files in { (end_time - start_time ).total_seconds ()} seconds" )
65
87
else :
66
- print (f"\n \n [INFO] Searched { self .file_count :,} folders in { (end_time - start_time ).total_seconds ()} seconds" )
67
-
88
+ print (
89
+ f"\n \n [INFO] Searched { self .file_count :,} folders in { (end_time - start_time ).total_seconds ()} seconds" )
90
+
68
91
return result
69
92
93
+
70
94
if __name__ == "__main__" :
71
95
72
- parser = argparse .ArgumentParser (description = "Search files within your computer" )
73
-
74
- parser .add_argument ("search-term" , metavar = "term" , type = str , help = "Filename/Word to search for" )
75
- parser .add_argument ("start-dir" , metavar = "dir" , type = str , help = "Directory where you want to search" )
76
-
77
- parser .add_argument ("-dc" , "--disable-case" , action = "store_true" , help = "Perform case insensitive search" )
78
- parser .add_argument ("-f" , "--folder" , action = "store_true" , help = "Search only folders (default: searches files)" )
79
- parser .add_argument ("-nb" , "--no-bar" , action = "store_false" , help = "Not show progress bar" )
80
-
96
+ parser = argparse .ArgumentParser (
97
+ description = "Search files within your computer" )
98
+
99
+ parser .add_argument (
100
+ "search-term" ,
101
+ metavar = "term" ,
102
+ type = str ,
103
+ help = "Filename/Word to search for"
104
+ )
105
+ parser .add_argument (
106
+ "start-dir" ,
107
+ metavar = "dir" ,
108
+ type = str ,
109
+ help = "Directory where you want to search"
110
+ )
111
+
112
+ parser .add_argument (
113
+ "-dc" ,
114
+ "--disable-case" ,
115
+ action = "store_true" ,
116
+ help = "Perform case insensitive search"
117
+ )
118
+ parser .add_argument (
119
+ "-f" ,
120
+ "--folder" ,
121
+ action = "store_true" ,
122
+ help = "Search only folders (default: searches files)"
123
+ )
124
+ parser .add_argument (
125
+ "-nb" ,
126
+ "--no-bar" ,
127
+ action = "store_false" ,
128
+ help = "Not show progress bar"
129
+ )
130
+
81
131
args = parser .parse_args ().__dict__
82
132
83
133
searcher = FileSearch ()
84
- results = searcher .search (args ['search-term' ], args ['start-dir' ], args ['folder' ], args ['disable_case' ], args ['no_bar' ])
134
+ results = searcher .search (
135
+ args ['search-term' ],
136
+ args ['start-dir' ],
137
+ args ['folder' ],
138
+ args ['disable_case' ],
139
+ args ['no_bar' ]
140
+ )
85
141
86
142
print ("[INFO] Results: \n " )
87
143
for path in results :
88
144
print ("Path:" , path )
89
- print ("" )
145
+ print ("" )
0 commit comments