Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to ignore hidden files using os.listdir()?

My python script executes an os.listdir(path) where the path is a queue containing archives that I need to treat one by one.

The problem is that I'm getting the list in an array and then I just do a simple array.pop(0). It was working fine until I put the project in subversion. Now I get the .svn folder in my array and of course it makes my application crash.

So here is my question: is there a function that ignores hidden files when executing an os.listdir() and if not what would be the best way?

like image 580
talnicolas Avatar asked Aug 17 '11 20:08

talnicolas


People also ask

What does OS Listdir (' ') mean?

listdir() method in python is used to get the list of all files and directories in the specified directory. If we don't specify any directory, then list of files and directories in the current working directory will be returned. Syntax: os.listdir(path)

Does OS Listdir return a list?

Description. Python method listdir() returns a list containing the names of the entries in the directory given by path. The list is in arbitrary order. It does not include the special entries '.

What does Listdir do in Python?

Overview. The os. listdir() method in Python gets the files and directories present in a given path.

How do I get a list of files in a directory in Python?

os. listdir() method gets the list of all files and directories in a specified directory. By default, it is the current directory.


2 Answers

You can write one yourself:

import os  def listdir_nohidden(path):     for f in os.listdir(path):         if not f.startswith('.'):             yield f 

Or you can use a glob:

import glob import os  def listdir_nohidden(path):     return glob.glob(os.path.join(path, '*')) 

Either of these will ignore all filenames beginning with '.'.

like image 186
Adam Rosenfield Avatar answered Sep 28 '22 17:09

Adam Rosenfield


This is an old question, but seems like it is missing the obvious answer of using list comprehension, so I'm adding it here for completeness:

[f for f in os.listdir(path) if not f.startswith('.')] 

As a side note, the docs state listdir will return results in 'arbitrary order' but a common use case is to have them sorted alphabetically. If you want the directory contents alphabetically sorted without regards to capitalization, you can use:

sorted((f for f in os.listdir() if not f.startswith(".")), key=str.lower) 

(Edited to use key=str.lower instead of a lambda)

like image 30
Joshmaker Avatar answered Sep 28 '22 17:09

Joshmaker