33import argparse
44from progress .bar import Bar
55
6+
67class FileSearch :
78 def __init__ (self ):
89 self .file_count = 0
910 self .progress_bar = Bar ('Searching' , suffix = '%(eta)ds' )
1011
1112 def get_file_count (self , path , is_folder ):
12-
13+
1314 if not is_folder :
1415 print ("[INFO] Reading files ..." )
1516 else :
1617 print ("[INFO] Reading folders ..." )
17-
18+
1819 self .file_count = 0
1920 for root , dirs , files in os .walk (path ):
2021 if is_folder :
2122 self .file_count += len (dirs )
2223 else :
2324 self .file_count += len (files )
2425
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+ ):
2634 results = []
2735 for root , dirs , files in os .walk (start_dir ):
2836 if is_folder :
@@ -48,7 +56,14 @@ def __recursive_check(self, search_term, start_dir, is_folder, disable_case, sho
4856
4957 return results
5058
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+ ):
5267 self .file_count = 0
5368 self .get_file_count (start_dir , is_folder )
5469 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
5772 raise Exception (f"Path { start_dir } does not exist." )
5873
5974 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+ )
6182 end_time = datetime .datetime .now ()
6283
6384 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" )
6587 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+
6891 return result
6992
93+
7094if __name__ == "__main__" :
7195
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+
81131 args = parser .parse_args ().__dict__
82132
83133 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+ )
85141
86142 print ("[INFO] Results: \n " )
87143 for path in results :
88144 print ("Path:" , path )
89- print ("" )
145+ print ("" )
0 commit comments