I'm basically trying to seperate file path strings into lists of files in the same path. Lets say I have this list:
files = ['user/hey.jpg','user/folder1/1.txt','user/folder1/folder2/random.txt',
'user/folder1/blah.txt','user/folder3/folder4/folder5/1.txt',
'user/folder3/folder4/folder5/3.txt','user/folder3/folder4/folder5/2.txt',
'user/1.jpg']
I'm looking to get this output (not concerned about the order):
[
['user/folder1/1.txt','user/folder1/blah.txt']
['user/folder1/folder2/random.txt']
['user/folder3/folder4/folder5/1.txt',
'user/folder3/folder4/folder5/2.txt','user/folder3/folder4/folder5/3.txt']
['user/1.jpg','user/hey.jpg']
]
Sorry if my example is sloppy. Typing on a phone is no fun. Any help is appreciated!
Use os.path.dirname as key in sorted and groupby functions should lead you to the results:
import os
from itertools import groupby
[list(g) for _, g in groupby(sorted(files, key=os.path.dirname), key=os.path.dirname)]
#[['user/hey.jpg', 'user/1.jpg'],
# ['user/folder1/1.txt', 'user/folder1/blah.txt'],
# ['user/folder1/folder2/random.txt'],
# ['user/folder3/folder4/folder5/1.txt',
# 'user/folder3/folder4/folder5/3.txt',
# 'user/folder3/folder4/folder5/2.txt']]
Try this:
import collections
results = defaultdict(list)
for path in files:
results[os.path.dirname(path)].append(path)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With