summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetri Lehtinen <petri@digip.org>2013-02-23 18:56:15 (GMT)
committerPetri Lehtinen <petri@digip.org>2013-02-23 18:56:15 (GMT)
commit914ec6f718ee5ad911c5f6c27988f2d0eec5ec48 (patch)
treefc4cc64ff1bbc93be73e9598a34c175e4391b8dc
parent827b36bed8b03a9bfc52134f7b4b9981db00b2be (diff)
parente2c114733b1c9dc3a78c6723934e523e5260e156 (diff)
downloadcpython-914ec6f718ee5ad911c5f6c27988f2d0eec5ec48.zip
cpython-914ec6f718ee5ad911c5f6c27988f2d0eec5ec48.tar.gz
cpython-914ec6f718ee5ad911c5f6c27988f2d0eec5ec48.tar.bz2
Issue #16695: Document how glob handles filenames starting with a dot
-rw-r--r--Doc/library/glob.rst15
-rw-r--r--Lib/glob.py10
-rw-r--r--Misc/NEWS3
3 files changed, 24 insertions, 4 deletions
diff --git a/Doc/library/glob.rst b/Doc/library/glob.rst
index 2584361..eff138b 100644
--- a/Doc/library/glob.rst
+++ b/Doc/library/glob.rst
@@ -16,8 +16,10 @@ according to the rules used by the Unix shell. No tilde expansion is done, but
``*``, ``?``, and character ranges expressed with ``[]`` will be correctly
matched. This is done by using the :func:`os.listdir` and
:func:`fnmatch.fnmatch` functions in concert, and not by actually invoking a
-subshell. (For tilde and shell variable expansion, use
-:func:`os.path.expanduser` and :func:`os.path.expandvars`.)
+subshell. Note that unlike :func:`fnmatch.fnmatch`, :mod:`glob` treats
+filenames beginning with a dot (``.``) as special cases. (For tilde and shell
+variable expansion, use :func:`os.path.expanduser` and
+:func:`os.path.expandvars`.)
For a literal match, wrap the meta-characters in brackets.
For example, ``'[?]'`` matches the character ``'?'``.
@@ -51,6 +53,15 @@ preserved. ::
>>> glob.glob('?.gif')
['1.gif']
+If the directory contains files starting with ``.`` they won't be matched by
+default. For example, consider a directory containing :file:`card.gif` and
+:file:`.card.gif`::
+
+ >>> import glob
+ >>> glob.glob('*.gif')
+ ['card.gif']
+ >>> glob.glob('.c*')
+ ['.card.gif']
.. seealso::
diff --git a/Lib/glob.py b/Lib/glob.py
index c9f8117..1a268a3 100644
--- a/Lib/glob.py
+++ b/Lib/glob.py
@@ -9,7 +9,10 @@ __all__ = ["glob", "iglob"]
def glob(pathname):
"""Return a list of paths matching a pathname pattern.
- The pattern may contain simple shell-style wildcards a la fnmatch.
+ The pattern may contain simple shell-style wildcards a la
+ fnmatch. However, unlike fnmatch, filenames starting with a
+ dot are special cases that are not matched by '*' and '?'
+ patterns.
"""
return list(iglob(pathname))
@@ -17,7 +20,10 @@ def glob(pathname):
def iglob(pathname):
"""Return an iterator which yields the paths matching a pathname pattern.
- The pattern may contain simple shell-style wildcards a la fnmatch.
+ The pattern may contain simple shell-style wildcards a la
+ fnmatch. However, unlike fnmatch, filenames starting with a
+ dot are special cases that are not matched by '*' and '?'
+ patterns.
"""
if not has_magic(pathname):
diff --git a/Misc/NEWS b/Misc/NEWS
index a3648f8..69314c3 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -1012,6 +1012,9 @@ Build
Documentation
-------------
+- Issue #16695: Document how glob handles filenames starting with a
+ dot. Initial patch by Jyrki Pulliainen.
+
- Issue #8890: Stop advertising an insecure practice by replacing uses
of the /tmp directory with better alternatives in the documentation.
Patch by Geoff Wilson.