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>