开发者

Simple list comprehension

开发者 https://www.devze.com 2023-01-08 22:48 出处:网络
I want a dictionary of files: files = [files for (subdir, dirs, files) i开发者_如何学Pythonn os.walk(rootdir)]

I want a dictionary of files:

files = [files for (subdir, dirs, files) i开发者_如何学Pythonn os.walk(rootdir)]

But I get,

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

when I want

files = ['filename1', 'filename2']

How do I prevent looping through that tuple? Thanks!


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']


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


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


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('*.*')
0

精彩评论

暂无评论...
验证码 换一张
取 消