mirror of
https://github.com/python/cpython.git
synced 2025-08-31 14:07:50 +00:00
#18151, part 2: Silence debug build resource warning for each file opened by
'Find in files' by replacing 'open with implicit close' by 'with open' in GrepDialog method grep_it. Streamline code with enumerate(), direct file iteration, and output tweak. Add test for this method, including output format.
This commit is contained in:
parent
9290dd14b0
commit
de3beb2617
2 changed files with 99 additions and 24 deletions
|
@ -81,36 +81,24 @@ class GrepDialog(SearchDialogBase):
|
|||
hits = 0
|
||||
for fn in list:
|
||||
try:
|
||||
f = open(fn, errors='replace')
|
||||
with open(fn, errors='replace') as f:
|
||||
for lineno, line in enumerate(f, 1):
|
||||
if line[-1:] == '\n':
|
||||
line = line[:-1]
|
||||
if prog.search(line):
|
||||
sys.stdout.write("%s: %s: %s\n" %
|
||||
(fn, lineno, line))
|
||||
hits += 1
|
||||
except OSError as msg:
|
||||
print(msg)
|
||||
continue
|
||||
lineno = 0
|
||||
while 1:
|
||||
block = f.readlines(100000)
|
||||
if not block:
|
||||
break
|
||||
for line in block:
|
||||
lineno = lineno + 1
|
||||
if line[-1:] == '\n':
|
||||
line = line[:-1]
|
||||
if prog.search(line):
|
||||
sys.stdout.write("%s: %s: %s\n" % (fn, lineno, line))
|
||||
hits = hits + 1
|
||||
if hits:
|
||||
if hits == 1:
|
||||
s = ""
|
||||
else:
|
||||
s = "s"
|
||||
print("Found", hits, "hit%s." % s)
|
||||
print("(Hint: right-click to open locations.)")
|
||||
else:
|
||||
print("No hits.")
|
||||
print(("Hits found: %s\n"
|
||||
"(Hint: right-click to open locations.)"
|
||||
% hits) if hits else "No hits.")
|
||||
|
||||
def findfiles(self, dir, base, rec):
|
||||
try:
|
||||
names = os.listdir(dir or os.curdir)
|
||||
except os.error as msg:
|
||||
except OSerror as msg:
|
||||
print(msg)
|
||||
return []
|
||||
list = []
|
||||
|
@ -131,3 +119,10 @@ class GrepDialog(SearchDialogBase):
|
|||
if self.top:
|
||||
self.top.grab_release()
|
||||
self.top.withdraw()
|
||||
|
||||
if __name__ == "__main__":
|
||||
# A human test is a bit tricky since EditorWindow() imports this module.
|
||||
# Hence Idle must be restarted after editing this file for a live test.
|
||||
import unittest
|
||||
unittest.main('idlelib.idle_test.test_grep', verbosity=2, exit=False)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue