如何使用python

时间:2015-07-04 15:10:06

标签: python python-3.x python-2.7 file

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

如何获取名称?

我尝试使用此os.path.basenameos.path.splitext ..好吧..没有像我预期的那样解决问题。

6 个答案:

答案 0 :(得分:7)

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 Cunningham提到的处理文件名更加pythonic的方式,你可以使用glob模块:

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

答案 1 :(得分:2)

我假设您基本上是在询问如何列出给定目录中的文件。你想要的是:

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

答案 2 :(得分:2)

您可以使用glob

from glob import glob

pth ="C:/Users/UserName/Desktop/New_folder/export/"
print(glob(pth+"*.mkv"))

path+"*.mkv"将匹配以.mkv结尾的所有文件。

要获得基本名称,您可以使用map或列表comp与iglob:

from glob import iglob

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


print([path.basename(f) for f in  iglob(pth+"*.mkv")])

iglob会返回一个迭代器,因此您无需无理由构建列表。

答案 3 :(得分:2)

如果您正在搜索递归文件夹搜索,此方法将帮助您使用os.walk获取文件名,您也可以使用以下代码获取这些文件的路径和目录。

import os, fnmatch
for path, dirs, files in os.walk(os.path.abspath(r"C:/Users/UserName/Desktop/New_folder/export/")):
    for filename in fnmatch.filter(files, "*.mkv"):
        print(filename)

答案 4 :(得分:1)

您可以使用glob

import glob
for file in glob.glob('C:\Users\UserName\Desktop\New_folder\export\*.mkv'):
    print(str(file).split('\')[-1])

这将列出所有扩展名为.mkv的文件 file.mkv, file2.mkv,依此类推。

答案 5 :(得分:0)

os.walk 中,您可以将文件路径作为列表读取

files = [ file_path  for _, _, file_path in os.walk(DIRECTORY_PATH)]
for file_name in files[0]: #note that it has list of lists
    print(file_name)