Доступ к последней строке после функции split для создания нового списка - PullRequest
0 голосов
/ 04 сентября 2018

Я новичок в Python и работаю над кодом для доступа к файлам двух типов (файлам dcd и inp), объединяю их и создаю новый список с соответствующими строками.

Я застрял где-то в начале. Я хочу получить все файлы DCD здесь. Таким образом, они имеют расширение .dcd, но первая часть не совпадает. Поэтому я подумал, есть ли способ получить к ним доступ после того, как я разделю строку.

    #collect all dcd files into a list
list1 = []
for filename1 in glob.glob('*/FEP_SYAF014*/FEP1/298/*/*.dcd'):
    filename1 = filename1.split('/')
    filename1.sort()    
    list1.append(filename1) 

Я хочу получить только имена с расширением dcd, которые проиндексированы [5], и создать новый список или изменить его, но я не уверен, как это сделать.

p.s Я только что опубликовал первую часть кода Спасибо ! странно отсортированная часть этот выглядит лучше

и вот как бы я хотел, чтобы он выглядел, но отсортирован и без файлов eq *. хочу отсортировать

Ответы [ 3 ]

0 голосов
/ 04 сентября 2018

Так что это сработало. Я просто добавил del filename1 [: 5], чтобы избавиться от других ненужных строковых частей импорт ос, глоб list1 = sorted (glob.glob (' / FEP_SYAF014 / FEP1 / 298 / / .dcd'), ключ = os.path.basename)

for filename1 in sorted(glob.glob('*/FEP_SYAF014 */FEP1/298/*/*.dcd'),key = os.path.basename):
    filename1 = filename1.split('/')

    filename1.sort()
    list1.append(filename1)
    del filename1[:5]
    print filename1
0 голосов
/ 05 сентября 2018

Ваша функция сортировки применяется к частям имени файла. Это не то, что вы хотите. Если я хорошо понимаю, вы хотите отсортировать список имен файлов, а не части имени файла.

Код, данный Жаном Франсуа, великолепен, но я думаю, вы хотели бы, чтобы ваш собственный код работал.

Вам нужно извлечь имя файла, используя только последнюю часть разбиения

Разделение возвращает список строк. Каждый элемент является частью оригинала.

filename = filename.split ('/') [len (filename.split ('/')) - 1]

Эта строка даст вам последнюю часть раскола Затем вы можете добавить эту часть в свой список И после всего этого вы можете отсортировать свой список

Надеюсь, это поможет!

0 голосов
/ 04 сентября 2018

просто используйте sort с ключом сортировки: os.path.basename (извлекает только базовое имя файла для выполнения сортировки):

import os, glob
list1 = sorted(glob.glob('*/FEP_SYAF014*/FEP1/298/*/*.dcd'), key = os.path.basename)
...