如何使用python获取目录中文件的名称

Xon*_*hiz 5 python file python-2.7 python-3.x

名为" export" 的文件夹中有一个mkv文件.我想要做的是创建一个python脚本,从该导出文件夹中提取文件名.假设文件夹位于" C:\Users\UserName\Desktop\New_folder\export".

我如何获取名称?

我试着用这个os.path.basenameos.path.splitext..好..没有工作,喜欢我的预期.

Kas*_*mvd 8

os.path在路径名上实现一些有用的功能.但它无法访问路径的内容.为此,您可以使用os.listdir.

以下命令将为您提供给定路径的内容列表:

os.listdir("C:\Users\UserName\Desktop\New_folder\export")
Run Code Online (Sandbox Code Playgroud)

现在,如果您只想要.mkv可以使用的文件fnmatch(此模块提供对Unix shell样式通配符的支持)模块来获取您期望的文件名:

import fnmatch
import os

print([f for f in os.listdir("C:\Users\UserName\Desktop\New_folder\export") if fnmatch.fnmatch(f, '*.mkv')])
Run Code Online (Sandbox Code Playgroud)

另外,正如@Padraic Cunningham提到的处理文件名更加pythonic的方式,你可以使用glob模块:

map(path.basename,glob.iglob(pth+"*.mkv"))
Run Code Online (Sandbox Code Playgroud)


Pad*_*ham 5

您可以使用glob

from glob import glob

pth ="C:/Users/UserName/Desktop/New_folder/export/"
print(glob(pth+"*.mkv"))
Run Code Online (Sandbox Code Playgroud)

path+"*.mkv"将匹配所有以.mkv.

要获得基本名称,您可以使用 map 或带有 iglob 的列表组合:

from glob import iglob

print(list(map(path.basename,iglob(pth+"*.mkv"))))


print([path.basename(f) for f in  iglob(pth+"*.mkv")])
Run Code Online (Sandbox Code Playgroud)

iglob 返回一个迭代器,因此您不会无缘无故地构建列表。