3

I want a dictionary of files:

files = [files for (subdir, dirs, files) in os.walk(rootdir)] 

But I get,

files = [['filename1', 'filename2']] 

when I want

files = ['filename1', 'filename2'] 

How do I prevent looping through that tuple? Thanks!

3

4 Answers 4

7

Both of these work:

[f for (subdir, dirs, files) in os.walk(rootdir) for f in files] sum([files for (subdir, dirs, files) in os.walk(rootdir)], []) 

Sample output:

$ find /tmp/test /tmp/test /tmp/test/subdir1 /tmp/test/subdir1/file1 /tmp/test/subdir2 /tmp/test/subdir2/file2 $ python >>> import os >>> rootdir = "/tmp/test" >>> [f for (subdir, dirs, files) in os.walk(rootdir) for f in files] ['file1', 'file2'] >>> sum([files for (subdir, dirs, files) in os.walk(rootdir)], []) ['file1', 'file2'] 
Sign up to request clarification or add additional context in comments.

Comments

2
for (subdir, dirs, f) in os.walk(rootdir): files.extend(f) 

1 Comment

And before this files = [].
2
files = [filename for (subdir, dirs, files) in os.walk(rootdir) for filename in files] 

Comments

0
import os, glob files = [file for file in glob.glob('*') if os.path.isfile(file)] 

if your files have extensions, then even simpler:

import glob files = glob.glob('*.*') 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.