Как я могу удалить расширение файла из списка, полного имен файлов?

Я использую следующее, чтобы получить список со всеми файлами внутри каталога с именем tokens:

import os    
accounts = next(os.walk("tokens/"))[2]

Выход:

>>> print accounts
['.DS_Store', 'AmieZiel.py', 'BrookeGianunzio.py', 'FayPinkert.py', 'JoieTrevett.py', 'KaroleColinger.py', 'KatheleenCaban.py', 'LashondaRodger.py', 'LelaSchoenrock.py', 'LizetteWashko.py',  'NickoleHarteau.py']

Я хочу удалить расширение .py из каждого элемента в этом списке. Мне удалось сделать это индивидуально, используя os.path.splitext:

>>> strip = os.path.splitext(accounts[1])
>>> print strip
('AmieZiel', '.py')
>>> print strip[0]
AmieZiel

Я уверен, что переусердствую, но я не могу найти способ удалить расширение файла из всех элементов в списке с помощью цикла for.

Каким будет правильный способ сделать это?


person viniciusmunich    schedule 03.01.2015    source источник


Ответы (1)


На самом деле вы можете сделать это в одной строке с пониманием списка:

lst = [os.path.splitext(x)[0] for x in accounts]

Но если вам нужен/нужен цикл for, эквивалентный код будет таким:

lst = []
for x in accounts:
    lst.append(os.path.splitext(x)[0])

Заметьте также, что я сохранил часть os.path.splitext(x)[0]. Это самый безопасный способ в Python удалить расширение из имени файла. В модуле os.path нет функции, посвященной этой задаче, и создание решения вручную с помощью str.split или чего-то еще может привести к ошибкам.

person Community    schedule 03.01.2015