Issue 33392: pathlib .glob('*/') returns files as well as directories (original) (raw)

Path.cwd().glob('/') seems to yield all files and folders in cwd, the same as .glob('').

I believe that glob('/') should yield only directories, and glob('') all files and directories. this behaviour isnt documented one way or the other. But it would be consistent with glob.glob()

console dump follows:

Python 3.6.5 |Anaconda custom (64-bit)| (default, Mar 29 2018, 13:14:23) Type 'copyright', 'credits' or 'license' for more information IPython 6.3.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import os

In [2]: from pathlib import Path

In [6]: import glob

In [13]: list(p.glob('*/')) Out[13]: [PosixPath('/Users/robertbuckley/python-scripts/pathlib_bug/f1.txt'), PosixPath('/Users/robertbuckley/python-scripts/pathlib_bug/f3.txt'), PosixPath('/Users/robertbuckley/python-scripts/pathlib_bug/d1'), PosixPath('/Users/robertbuckley/python-scripts/pathlib_bug/f2.txt'), PosixPath('/Users/robertbuckley/python-scripts/pathlib_bug/d2')]

In [14]: list(p.glob('*')) Out[14]: [PosixPath('/Users/robertbuckley/python-scripts/pathlib_bug/f1.txt'), PosixPath('/Users/robertbuckley/python-scripts/pathlib_bug/f3.txt'), PosixPath('/Users/robertbuckley/python-scripts/pathlib_bug/d1'), PosixPath('/Users/robertbuckley/python-scripts/pathlib_bug/f2.txt'), PosixPath('/Users/robertbuckley/python-scripts/pathlib_bug/d2')]

In [15]: glob.glob(os.path.join(str(p), '*/')) Out[15]: ['/Users/robertbuckley/python-scripts/pathlib_bug/d1/', '/Users/robertbuckley/python-scripts/pathlib_bug/d2/']

In [16]: glob.glob(os.path.join(str(p), '*')) Out[16]: ['/Users/robertbuckley/python-scripts/pathlib_bug/f1.txt', '/Users/robertbuckley/python-scripts/pathlib_bug/f3.txt', '/Users/robertbuckley/python-scripts/pathlib_bug/d1', '/Users/robertbuckley/python-scripts/pathlib_bug/f2.txt', '/Users/robertbuckley/python-scripts/pathlib_bug/d2']

I checked this on Mac and Windows, pathlib and the old glob std lib behave the same on both in this respect

On Tue, 1 May 2018, 18:35 Emily Morehouse, <report@bugs.python.org> wrote:

Emily Morehouse <emily@cuttlesoft.com> added the comment:

Good find -- I agree that when using Path.cwd().glob('*/'), it should only return directories. This follows the original glob library's functionality as well as the Unix expectation (I believe Windows as well, but I'll double check).

I'll work on a fix!


assignee: -> emilyemorehouse nosy: +emilyemorehouse


Python tracker <report@bugs.python.org> <https://bugs.python.org/issue33392>