নেস্টেড তালিকা os.walk
বোধগম্যগুলির পরিবর্তে এবং এর পরিবর্তে সহজ প্রত্যয় ম্যাচিংয়ের সমাধান এখানে রয়েছে glob
:
import os
cfiles = [os.path.join(root, filename)
for root, dirnames, filenames in os.walk('src')
for filename in filenames if filename.endswith('.c')]
এটি ওয়ান-লাইনারে সংকুচিত করা যেতে পারে:
import os;cfiles=[os.path.join(r,f) for r,d,fs in os.walk('src') for f in fs if f.endswith('.c')]
বা একটি ফাংশন হিসাবে সাধারণীকরণ:
import os
def recursive_glob(rootdir='.', suffix=''):
return [os.path.join(looproot, filename)
for looproot, _, filenames in os.walk(rootdir)
for filename in filenames if filename.endswith(suffix)]
cfiles = recursive_glob('src', '.c')
আপনার যদি পুরো glob
স্টাইলের নিদর্শনগুলির প্রয়োজন হয় তবে আপনি অ্যালেক্স এবং ব্রুনোর উদাহরণ অনুসরণ করতে এবং ব্যবহার করতে পারেন fnmatch
:
import fnmatch
import os
def recursive_glob(rootdir='.', pattern='*'):
return [os.path.join(looproot, filename)
for looproot, _, filenames in os.walk(rootdir)
for filename in filenames
if fnmatch.fnmatch(filename, pattern)]
cfiles = recursive_glob('src', '*.c')
os.path.walk()
যা ব্যবহারের চেয়ে একটু বেশিই মজাদারos.walk()