diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py
index d4f228a..0664856 100755
--- a/Lib/test/regrtest.py
+++ b/Lib/test/regrtest.py
@@ -434,9 +434,14 @@
                 stdtests.remove(arg)
             nottests.add(arg)
         args = []
-    tests = tests or args or findtests(testdir, stdtests, nottests)
+    alltests = findtests(testdir, stdtests, nottests)
+    tests = tests or args or alltests
     if single:
         tests = tests[:1]
+        try:
+            next_single_test = alltests[alltests.index(tests[0])+1]
+        except IndexError:
+            next_single_test = None
     # Remove all the tests that precede start if it's set.
     if start:
         try:
@@ -650,16 +655,9 @@
                 raise
 
     if single:
-        alltests = findtests(testdir, stdtests, nottests)
-        for i in range(len(alltests)):
-            if tests[0] == alltests[i]:
-                if i == len(alltests) - 1:
-                    os.unlink(filename)
-                else:
-                    fp = open(filename, 'w')
-                    fp.write(alltests[i+1] + '\n')
-                    fp.close()
-                break
+        if next_single_test:
+            with open(filename, 'w') as fp:
+                fp.write(next_single_test + '\n')
         else:
             os.unlink(filename)
 
