在名为“export
”的文件夹中有一个mkv文件。我想要做的是制作一个python脚本,从该导出文件夹中提取文件名。 假设文件夹位于“C:\Users\UserName\Desktop\New_folder\export
”。如何使用python获取目录中文件的名称
我该如何取名?
我试过用这个os.path.basename
和os.path.splitext
..好..没有像我想象的那样工作。
在名为“export
”的文件夹中有一个mkv文件。我想要做的是制作一个python脚本,从该导出文件夹中提取文件名。 假设文件夹位于“C:\Users\UserName\Desktop\New_folder\export
”。如何使用python获取目录中文件的名称
我该如何取名?
我试过用这个os.path.basename
和os.path.splitext
..好..没有像我想象的那样工作。
os.path
在路径名上实现了一些有用的功能。但它无法访问路径的内容。为此,您可以使用os.listdir
。
下面的命令会给你一个给定的路径的内容列表:
os.listdir("C:\Users\UserName\Desktop\New_folder\export")
现在,如果你只是想.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')]
另外,作为@Padraic坎宁安提到的一个更Python的方式来处理文件名,你可以使用glob
模块:
map(path.basename,glob.iglob(pth+"*.mkv"))
我假定你基本上询问如何在给定的目录中列出的文件。你想要的是:
import os
print os.listdir("""C:\Users\UserName\Desktop\New_folder\export""")
如果有多个文件,你想有一个.MKV结束的一个(或多个),你可以这样做:
import os
files = os.listdir("""C:\Users\UserName\Desktop\New_folder\export""")
mkv_files = [_ for _ in files if _[-4:] == ".mkv"]
print mkv_files
ohh ..谢谢.. :) – Xonshiz
您可以使用glob:
from glob import glob
pth ="C:/Users/UserName/Desktop/New_folder/export/"
print(glob(pth+"*.mkv"))
path+"*.mkv"
将匹配所有以.mkv
结尾的文件。
先手,你可以使用地图或列表补偿与iglob的基本名称:
from glob import iglob
print(list(map(path.basename,iglob(pth+"*.mkv"))))
print([path.basename(f) for f in iglob(pth+"*.mkv")])
iglob返回一个迭代器,这样你就不会建立任何理由的清单。
为什么'os.path.basename'没有工作?你能否展示一个不起作用的示例代码? –
你可以粘贴你的代码吗? – PetarP