如何从包含文件名的列表中删除文件扩展名?

9

我正在使用下面的代码来获取名为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个回答

15

你实际上可以使用列表推导式在一行中完成这个操作:

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或其他方法来解决问题会容易出错。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接