1
下面是我的Python文件搜索應用程序的基本功能。我仍然是Python的noob,並且對於獲取工作代碼比考慮效率和性能更感興趣。我想從你那裏得知Python或任何其他語言,退伍軍人是否有任何事情可以使我的代碼更高效,從而更快?我已經閱讀過關於分析腳本的地方,但我並不十分熟悉這個概念,也不確定它是否適用。目前,我的代碼需要大約4-5分鐘來搜索100個文件(最大的文件是〜5000KB)。這很慢。我的Python搜索代碼的效率如何?
代碼:
userstring = raw_input("Enter a search string!")
...
...
...
if userstring:
userStrHEX = userstring.encode('hex')
userStrASCII = ''.join(str(ord(char)) for char in userstring)
regex = re.compile(r"(%s|%s|%s)" % (re.escape(userstring), re.escape(userStrHEX), re.escape(userStrASCII)))
else:
sys.exit('You Must Enter A String!!!')
count = 0
count2 = 0
for afile in filelist:
(head, filename) = os.path.split(afile)
if afile.endswith(".log") or afile.endswith(".txt"):
count2 += 1
self.progress_bar.Show()
self.progress_bar.SetRange(numFiles)
wx.CallAfter(self.progress_bar.SetValue, count2)
f=ftp.open(afile, 'r')
for i, line in enumerate(f.readlines()):
result = regex.search(line)
if self.shouldAbort:
return self.shouldAbort
break
if result:
count += 1
ln = str(i)
pathname = os.path.join(afile)
template = "\n\nLine: {0}\nFile: {1}\nString Type: {2}\n\n"
output = template.format(ln, pathname, result.group())
ftp.get(afile, 'c:\\Extracted\\' + filename)
temp.write(output)
break
else:
temp.write("\nNo Match in: " + os.path.join(afile))