List only files in a directory?
This is a simple generator expression:
files = (file for file in os.listdir(path)
if os.path.isfile(os.path.join(path, file)))
for file in files: # You could shorten this to one line, but it runs on a bit.
...
Or you could make a generator function if it suited you better:
def files(path):
for file in os.listdir(path):
if os.path.isfile(os.path.join(path, file)):
yield file
Then simply:
for file in files(path):
...
Get all file names in a directory with ruby
Dir.new('.').each {|file| puts file }
Note that this will include . and ..
Find all files in a directory with extension .txt in Python
You can use glob
:
import glob, os
os.chdir("/mydir")
for file in glob.glob("*.txt"):
print(file)
or simply os.listdir
:
import os
for file in os.listdir("/mydir"):
if file.endswith(".txt"):
print(os.path.join("/mydir", file))
or if you want to traverse directory, use os.walk
:
import os
for root, dirs, files in os.walk("/mydir"):
for file in files:
if file.endswith(".txt"):
print(os.path.join(root, file))
List files ONLY in the current directory
Just use os.listdir
and os.path.isfile
instead of os.walk
.
Example:
import os
files = [f for f in os.listdir('.') if os.path.isfile(f)]
for f in files:
# do something
But be careful while applying this to other directory, like
files = [f for f in os.listdir(somedir) if os.path.isfile(f)]
which would not work because f
is not a full path but relative to the current directory.
Therefore, for filtering on another directory, do os.path.isfile(os.path.join(somedir, f))
(Thanks Causality for the hint)
Get names of all files from a folder with Ruby
You also have the shortcut option of
Dir["/path/to/search/*"]
and if you want to find all Ruby files in any folder or sub-folder:
Dir["/path/to/search/**/*.rb"]
Listing only directories using ls in Bash?
*/
is a pattern that matches all of the subdirectories in the current directory (*
would match all files and subdirectories; the /
restricts it to directories). Similarly, to list all subdirectories under /home/alice/Documents, use ls -d /home/alice/Documents/*/
Getting a list of all subdirectories in the current directory
Do you mean immediate subdirectories, or every directory right down the tree?
Either way, you could use os.walk
to do this:
os.walk(directory)
will yield a tuple for each subdirectory. Ths first entry in the 3-tuple is a directory name, so
[x[0] for x in os.walk(directory)]
should give you all of the subdirectories, recursively.
Note that the second entry in the tuple is the list of child directories of the entry in the first position, so you could use this instead, but it's not likely to save you much.
However, you could use it just to give you the immediate child directories:
next(os.walk('.'))[1]
Or see the other solutions already posted, using os.listdir
and os.path.isdir
, including those at "How to get all of the immediate subdirectories in Python".
Get a filtered list of files in a directory
import glob
jpgFilenamesList = glob.glob('145592*.jpg')
See glob
in python documenttion
Related Topics
Monitor Ruby Processes with Monit
Exclude Option from Collection.Map in Ruby on Rails
How to Convert a Ruby Bigdecimal to a 2-Decimal Place String
Catching Command-Line Errors Using %X
How to Call Methods Defined in Applicationcontroller in Models
Single Quote String String Interpolation
How to Remove a Row from a CSV with Ruby
Find Keep Duplicates in Ruby Hashes
Read and Write File Atomically
Case-Insensitive Find_Or_Create_By_Whatever
What Does a Single Splat/Asterisk in a Ruby Argument List Mean
Testing Rake Tasks with Rspec Is Not Accepting Arguments
Undefined Method 'Require_Relative' for Main:Object (Nomethoderror)
How Is Ruby Tcpsocket Timeout Defined
Why Does Date.Yesterday Counts as Date.Today Also
How to Enable Colors with Rspec When Using Jruby or Bundle Exec