邊學邊用python-searchs.py

import sys
import os
#函數名稱:Search
#功能:從文件中查找包含內容的行,並輸出該行號
def Search(filename, content):
    f = open(filename, "r")
    line = f.readline()
    i = 0       #行號
    result = []
    while line:
        i += 1
 if line.find(content) != -1:
     result.append(i)
        line = f.readline()
    return result   

#函數名稱:FileList
#功能:獲取某一目錄下文件名中包含指定內容的所有文件名稱
def FileNameList(path, content):
    result = []
    filenames = os.listdir(path)
    for fname in filenames:
        if None == os.path.isfile(path + '/' + fname):
            continue
        if content == None or fname.find(content) != -1:
            result.append(fname)

    return result

#程序從這裏開始執行
argnum = len(sys.argv)
if argnum  < 3:
    print u"完成的功能:查找某一文件(或某一目錄下某些文件)中包括某一內容的所有行,並輸出相應的行號"
    print u"用法1(在單個文件中查找): Search content filename"
    print u"用戶2(在某目錄下的某些文件中查找):Search content path filter"
    sys.exit()

filenames = []
if os.path.isdir(sys.argv[2]):
    fnamefilter = None
    if argnum > 3:
        fnamefilter = sys.argv[3]
    filenames = FileNameList(sys.argv[2], fnamefilter)
    for i in range(len(filenames)):                 #化成絕對路徑
        filenames[i] = sys.argv[2] + '/' + filenames[i]
elif os.path.isfile(sys.argv[2]):
    filenames.append(sys.argv[2])
else:
    print u"#:參數錯誤,第二個參數必須是合法的目錄或文件名"
    sys.exit
content = sys.argv[1]  
for filename in filenames:
    linenumbers = Search(filename, content)
    if len(linenumbers) < 1 :
        print ":Not found /"" + content + "/" in file /"" + filename + "/"!"
    else:
        print ":Found /"" + content + "/" in file /"" + filename + "/" at the following lines(total:", len(linenumbers), "):"
        for i in linenumbers:
            print "/t", i
   
#未解決的問題:接收命令行傳入的中文字符串

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章