annotate Lib/glob.py @ 4566:6403c94de50d legacy-trunk

Added safeguard against failure in __del__.
author Guido van Rossum <guido@python.org>
date Wed, 27 Nov 1996 19:39:58 +0000
parents 03b9f152adb6
children a50df7f3a10a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
107
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 # Module 'glob' -- filename globbing.
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2
570
34a761046dbd Use module 'os'
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
3 import os
107
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
4 import fnmatch
574
03b9f152adb6 Never return a non-existing pathname.
Guido van Rossum <guido@python.org>
parents: 570
diff changeset
5 import regex
107
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
6
570
34a761046dbd Use module 'os'
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
7
107
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
8 def glob(pathname):
574
03b9f152adb6 Never return a non-existing pathname.
Guido van Rossum <guido@python.org>
parents: 570
diff changeset
9 if not has_magic(pathname):
03b9f152adb6 Never return a non-existing pathname.
Guido van Rossum <guido@python.org>
parents: 570
diff changeset
10 if os.path.exists(pathname):
03b9f152adb6 Never return a non-existing pathname.
Guido van Rossum <guido@python.org>
parents: 570
diff changeset
11 return [pathname]
03b9f152adb6 Never return a non-existing pathname.
Guido van Rossum <guido@python.org>
parents: 570
diff changeset
12 else:
03b9f152adb6 Never return a non-existing pathname.
Guido van Rossum <guido@python.org>
parents: 570
diff changeset
13 return []
570
34a761046dbd Use module 'os'
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
14 dirname, basename = os.path.split(pathname)
107
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
15 if has_magic(dirname):
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 list = glob(dirname)
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 else:
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 list = [dirname]
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 if not has_magic(basename):
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
20 result = []
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
21 for dirname in list:
570
34a761046dbd Use module 'os'
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
22 if basename or os.path.isdir(dirname):
34a761046dbd Use module 'os'
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
23 name = os.path.join(dirname, basename)
34a761046dbd Use module 'os'
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
24 if os.path.exists(name):
107
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 result.append(name)
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 else:
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
27 result = []
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
28 for dirname in list:
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
29 sublist = glob1(dirname, basename)
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 for name in sublist:
570
34a761046dbd Use module 'os'
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
31 result.append(os.path.join(dirname, name))
107
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
32 return result
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
33
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
34 def glob1(dirname, pattern):
570
34a761046dbd Use module 'os'
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
35 if not dirname: dirname = os.curdir
107
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
36 try:
570
34a761046dbd Use module 'os'
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
37 names = os.listdir(dirname)
34a761046dbd Use module 'os'
Guido van Rossum <guido@python.org>
parents: 559
diff changeset
38 except os.error:
107
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
39 return []
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 result = []
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
41 for name in names:
574
03b9f152adb6 Never return a non-existing pathname.
Guido van Rossum <guido@python.org>
parents: 570
diff changeset
42 if name[0] != '.' or pattern[0] == '.':
03b9f152adb6 Never return a non-existing pathname.
Guido van Rossum <guido@python.org>
parents: 570
diff changeset
43 if fnmatch.fnmatch(name, pattern):
03b9f152adb6 Never return a non-existing pathname.
Guido van Rossum <guido@python.org>
parents: 570
diff changeset
44 result.append(name)
107
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 return result
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
46
574
03b9f152adb6 Never return a non-existing pathname.
Guido van Rossum <guido@python.org>
parents: 570
diff changeset
47
03b9f152adb6 Never return a non-existing pathname.
Guido van Rossum <guido@python.org>
parents: 570
diff changeset
48 magic_check = regex.compile('[*?[]')
03b9f152adb6 Never return a non-existing pathname.
Guido van Rossum <guido@python.org>
parents: 570
diff changeset
49
107
1e007dccb270 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
50 def has_magic(s):
574
03b9f152adb6 Never return a non-existing pathname.
Guido van Rossum <guido@python.org>
parents: 570
diff changeset
51 return magic_check.search(s) >= 0