標籤:
輸入尋找的檔案夾路徑,要尋找的內容關鍵字(可以指定多個),要尋找的檔案類型(可以是多個),搜尋出合格檔案,並記錄所有合格行號及行內容。
寫的感覺有點冗餘,但好歹還能使用^-^,主要是方便手頭工作。
# coding:utf8import osfrom os.path import *# enter the search dirprint r"""Search file tool(Ver1.0)dirpath /k keywords [/e fileextension] [/o resultfilepath]/k keyword you want to search/e file extension(.txt .java .cs etc...)/o the path of the result file you want to saveexample:e:\temp\py /k ‘kw1‘ /e ‘.txt‘e:\temp\py /k "kw1" "kw2" /e ".txt" ".cs" /o e:\temp\py\result.txt"""# Get user command.input = raw_input("> ")if input.find("/k") < 0: print "/k option must be input" exit(1)# Get the dir root_dir = input.split("/k")[0].strip()if not isdir(root_dir): print "First parameter must be a valid dir!" exit(1)# Get the keywords and file extension option = input.split("/k")[1].strip()if option.find("/e") < 0: key_words = [s.strip("\‘\"") for s in option.split()]else: key_words = [s.strip("\‘\"") for s in option.split("/e")[0].strip().split()] if option.find("/o") < 0: file_exts = [s.strip("\‘\"") for s in option.split("/e")[1].strip().split()] else: file_exts = [s.strip("\‘\"") for s in option.split("/e")[1].strip().split("/o")[0].strip().split()] search_filter = "Search dir:%s\n" % root_dirsearch_filter = search_filter + ("Search key words:%s\n" % " ".join(key_words))if file_exts: search_filter = search_filter + ("Search file type:%s\n" % " ".join(file_exts))print search_filter# Search file by the keywordresult_files = {}for (dir_name, subdirs, files) in os.walk(root_dir): for file in files: filepath = os.path.join(dir_name, file) ext = os.path.splitext(filepath)[1] if file_exts and (ext not in file_exts): continue file = open(filepath) # Compare every lines of the file by the keywords for index, line in enumerate(file.readlines()): for keyword in key_words: if line.find(keyword) > 0: # Save matched line and line number match_line = "line:%d %s" % (index, line) if filepath not in result_files.keys(): result_files[filepath] = [] result_files[filepath].append(match_line) break file.close()print "Search finish!"# Output the search resultif option.find("/o") >= 0: # Write result to file save_file_path = option.split("/o")[len(option.split("/o")) - 1].strip() save_file = open(save_file_path, "w") save_file.write(search_filter) summary = "find:%d files" % len(result_files.keys()) save_file.write("%s\n" % summary) for key, value in result_files.items(): save_file.write("%s\n" % key) for line in value: #print "type:", type(line) save_file.write("--%s" % line) save_file.close() else: # Show result in command window summary = "find:%d files" % len(result_files.keys()) print summary for key, value in result_files.items(): print "%s" % key for line in value: print "--%s" % line 直接運行,就可以提示你如何操作,第一個實用的python程式,記錄一下。
python 尋找檔案內容