Re: Searching for a file

Roland Mueller via Python-list <[email protected]>
Newsgroups gmane.comp.python.general
Message-ID <CALk2KRX7hS+aYf9bBa5Ka+_-rCCYiau_XLJW53tL=F5rdNBTsg@mail.gmail.com>
When answering I saw only the post from Peter. Everything else was in SPAM
folder. GMail was so kind to move the "junk" mails to my Inbox after
pressing SENT :-)

My code works in Linux but with a small change it should work in Windows
too.

ti 27.5.2025 klo 17.41 Roland Mueller ([email protected])
kirjoitti:

> To get a list of files in a given directory one can use glob.glob and
> os.path.isfile
>
> >>> from os.path import isfile
> >>> from glob import glob
> >>> files_in_var_tmp = [f for f in glob('/var/tmp/*') if isfile(f) ]
>
> For several directories iterate over the dirs and add the resulting list
> of files.
>
> >>> tmp_files = []
> >>> for dir in ['/tmp', '/var/tmp']:
> ...     tmp_files += [f for f in glob(dir + '/*')  if isfile(f) ]
>

>>> from os.path import isfile, join
>>> from glob import glob

>>> tmp_files = []
>>> for dir in ['/tmp', '/var/tmp']:
...     tmp_files += [f for f in glob(join(dir, '*'))  if isfile(f) ]

Here os.path.join is used to put the parts for the glob mask together
instead of plain '/'.

>
>
> ti 27.5.2025 klo 17.05 Peter J. Holzer ([email protected]) kirjoitti:
>
>> On 2025-05-24 17:18:11 -0600, Mats Wichmann wrote:
>> > On 5/23/25 16:05, Rob Cliffe via Python-list wrote:
>> > > On 23/05/2025 18:55, Mats Wichmann wrote:
>> > > > On 5/22/25 21:04, Rob Cliffe via Python-list wrote:
>> > > > > It occurs to me that it might be useful if Python provided a
>> > > > > function to search for a file with a given name in various
>> > > > > directories (much as the import.import_lib function searches for
>> > > > > a module in the directories in sys.path).
>> > > > > This function would perhaps be best placed in the os.path or os
>> modules.
>> > > > > To start the ball rolling, I offer this version:
>> > > > consider: os.walk, glob.glob, Path.glob
>> > > >
>> > > >
>> > > I have.  None of these are appropriate.
>> > > os.walk iterates *recursively* over a *single* directory and its
>> > > subdirectories.
>> > > pathlib.Path.glob so far as I can make out (I have never used pathlib)
>> > > does much the same.
>> > > glob.glob (so far as I can make out) does a *wildcard* search for
>> > > directories matching a *single* pattern.
>> > > My suggestion needs a *non-recursive* search for a *file* in a *list*
>> of
>> > > *non-wildcarded* directories.
>> >
>> > They don't give you "search in a list of directories" intrinsically, but
>> > that's simple loop, bailing out on a match, no?
>>
>> But they all read directories. For Rob's purpose this isn't necessary.
>> He just needs to test a fixed number of locations. Reading even one
>> directory (muss less recursively scanning a whole tree like os.walk
>> does) is just pointless extra work.
>>
>>         hjp
>>
>> --
>>    _  | Peter J. Holzer    | Story must make more sense than reality.
>> |_|_) |                    |
>> | |   | [email protected]         |    -- Charles Stross, "Creative writing
>> __/   | http://www.hjp.at/ |       challenge!"
>> --
>> https://mail.python.org/mailman3//lists/python-list.python.org
>>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.