簡體   English   中英

Glob 不返回指定目錄中的文件列表

[英]Glob doesn't return list of files from specified directory

我在 Stack Overflow 上的其他帖子中找到了兩種從指定目錄中列出文件的方法,但我似乎無法讓它們正常工作。 第一個返回路徑,第二個返回我要查找的文件以及路徑。 我嘗試了幾種方法,例如重命名目標目錄和文件,但似乎沒有奏效。

有問題的代碼:

import glob

jpgFilenamesList = glob.glob(r"C:\Users\viodo\PycharmProjects\pythonProject")
print(jpgFilenamesList)

mydir = r"C:\Users\viodo\PycharmProjects\pythonProject"

file_list = glob.glob(mydir + "/*.jpg")
print(file_list)

我得到了什么:

['C:\\Users\\viodo\\PycharmProjects\\pythonProject']
['C:\\Users\\viodo\\PycharmProjects\\pythonProject\\dngjknfjkg.jpg', 'C:\\Users\\viodo\\PycharmProjects\\pythonProject\\fjkdnfkl.jpg', 'C:\\Users\\viodo\\PycharmProjects\\pythonProject\\skdklenfkd.jpg']

在另一個線程中找到的解決方案: Python glob multiple filetypes

一些調整讓它運行順利。 謝謝您的幫助!

Glob 返回相對於根目錄的路徑名列表。 除非指定的 glob 模式是絕對路徑,否則該根目錄被假定為您當前的工作目錄。 簡而言之,因為你的模式是絕對路徑模式,所以返回的文件不會是相對的,而是絕對的,包括整個路徑。

在不使用絕對路徑模式時,在某些情況下,如果文件名在當前工作目錄中匹配,您可能只會得到一個文件名。 該文件名當然是相對於當前工作目錄的。

In Python 3.10, you should be able to change the assumed root directory without using an absolute pattern via a new root_dir parameter, but this is not currently available in 3.9 and below: https://docs.python.org/3.10/library/ glob.html

在您的情況下,正如其他人在評論中提到的那樣, os.path.basename應該能夠僅獲取文件名,如果那是您所追求的。 或者,您可以通過os.chdir更改當前工作目錄,並提供一個簡單的*.jpg模式並僅獲取與當前工作目錄相關的文件名,這兩個都是合理的解決方案。

提取基本名稱:

mydir = r"C:\Users\viodo\PycharmProjects\pythonProject"
file_list = [os.path.basename(f) for f in glob.glob(mydir + "/*.jpg")]

或返回相對於任意“當前工作目錄”的文件:

os.chdir(r"C:\Users\viodo\PycharmProjects\pythonProject")
file_list = glob.glob("*.jpg")

根據您的要求,一種解決方案可能比另一種更好。

暫無
暫無

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

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