Я хотел бы узнать, как изменить содержимое списка, в частности, имена файлов, которые были возвращены os.listdir()
.Разбиение списка на Python
Имена файлов состоят из нескольких дубликатов имен, за которыми следует символ подчеркивания, затем суффикс, а затем расширение файла. Я пытаюсь вырезать элементы в списке вниз только первую часть имени файла, перед '_'
, так:
apple_d.jpg
apple_si.jpg
apple_sg.jpg
становится только одну запись в списке, 'apple'
.
Я могу избавиться от дубликатов и повторной alphabetise с
list(sorted(set(t)))
но избавившись от всего, от подчёркивания года оказывается сложнее. Я попытался сделать это через .rpartition("_")[0]
. но это, по-видимому, не работает для списков. Так что мне интересно, как это сделать?
Редактировать: хорошо, не работает здесь. Все еще получаются дубликаты и не раскалываются.
objects = os.listdir(dir)
for object in objects:
sorted(set(object.split('_', 1)[0]))
cmds.menuItem(label = object, parent = "objectMenu")
(Последняя команда - команда майя, которая заполняет меню опций). Очень устал, поэтому мне придется это сделать позже. Но большое спасибо за помощь на сегодняшний день. Конечно, скоро это получится.
Я предполагаю, что вы не ищете 'os.path.commonprefix' ... но похоже, что он близок к тому, что вы хотите, поэтому я расскажу об этом здесь. – mgilson
@mgilson: 'commonprefix' для * компонентов пути * (поэтому разделяется' os.sep'), а не имена файлов. –
@MartijnPieters - Документы говорят, что он работает по-характеру. Я не вижу причин, по которым он не может работать для имен файлов. – mgilson