python 尋找檔案內容

來源:互聯網
上載者:User

標籤:

輸入尋找的檔案夾路徑,要尋找的內容關鍵字(可以指定多個),要尋找的檔案類型(可以是多個),搜尋出合格檔案,並記錄所有合格行號及行內容。

寫的感覺有點冗餘,但好歹還能使用^-^,主要是方便手頭工作。

# 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 尋找檔案內容

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.