簡體   English   中英

如何使用python獲取目錄中的文件名

[英]how to get name of a file in directory using python

在名為“ export ”的文件夾中有一個 mkv 文件。 我想要做的是制作一個 python 腳本,從該導出文件夾中獲取文件名。 假設該文件夾位於“ C:\\Users\\UserName\\Desktop\\New_folder\\export ”。

我如何獲取名稱?

我嘗試使用這個os.path.basenameos.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 Cunningham 提到的,作為處理文件名的更pythonic 的方式,您可以使用glob模塊:

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

您可以使用glob

from glob import glob

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

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")])

iglob 返回一個迭代器,因此您不會無緣無故地構建列表。

我假設您基本上是在問如何列出給定目錄中的文件。 你想要的是:

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

如果您正在搜索遞歸文件夾搜索,此方法將幫助您使用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)

你可以使用 glob

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

這將列出所有擴展file.mkv, file2.mkv .mkv 的文件,如file.mkv, file2.mkv等。

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM