如何从充满文件名的列表中删除文件扩展名?

时间:2015-01-03 00:51:16

标签: python list path file-extension

我使用以下内容获取包含名为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循环从列表中的所有项目中删除文件扩展名。

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:9)

您实际上可以使用list comprehension

在一行中执行此操作
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手工制作解决方案或者某些内容容易出错。