Python提取目录中指定扩展名文件的文件名前缀问题
批量提取目录下.txt文件的文件名前缀(一行实现)
嘿,我来帮你搞定这个问题!你已经离目标很近了,只需要在现有的列表推导式里对每个文件名做个小处理就行,而且完全可以一行实现。
首先先纠正你代码里的一个小问题:os.listdir("path")这里的"path"是字符串,应该改成变量path,不然程序会去找名为"path"的目录,而不是你定义的/home/inputs。
接下来直接给你一行解决的代码:
import os path = "/home/inputs" prefixes = [os.path.splitext(f)[0] for f in os.listdir(path) if f.endswith('.txt')] print(prefixes)
运行这段代码后,输出就是你想要的:['new_categorized', 'new', '2017_input']
原理说明:
os.path.splitext(f)会把每个文件名拆成一个元组,比如new_categorized.txt会变成('new_categorized', '.txt'),取索引[0]就拿到了不带扩展名的前缀。- 把这个操作嵌入到你原来的列表推导式里,就能批量处理所有符合条件的
.txt文件。
如果你想用更现代简洁的写法,推荐用Python 3.4+的pathlib模块,代码会更优雅:
from pathlib import Path prefixes = [p.stem for p in Path("/home/inputs").glob("*.txt")] print(prefixes)
这里Path.glob("*.txt")会直接匹配目录下所有.txt文件,而p.stem属性直接返回不带扩展名的文件名,连splitext都不用写,是不是更清爽?
内容的提问来源于stack exchange,提问作者bapors
相关产品推荐
相关产品推荐

