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
#未解決的問題:接收命令行傳入的中文字符串