假設我的文件夾結構是如何獲取python目錄中的文件名列表(沒有擴展名)?
+Data
-abc.jpg
-db.jpg
-ap.jpg
輸入爲 '路徑/到/數據'
預期輸出爲[ 'ABC', 'DB', 'AP']
只見許多類似的問題,但沒有得到什麼我想要的。 我更喜歡在python中使用os模塊。
假設我的文件夾結構是如何獲取python目錄中的文件名列表(沒有擴展名)?
+Data
-abc.jpg
-db.jpg
-ap.jpg
輸入爲 '路徑/到/數據'
預期輸出爲[ 'ABC', 'DB', 'AP']
只見許多類似的問題,但沒有得到什麼我想要的。 我更喜歡在python中使用os模塊。
import os
files_no_ext = [".".join(f.split(".")[:-1]) for f in os.listdir() if os.path.isfile(f)]
print(files_no_ext)
['os.listdir'](https://docs.python.org/3.6/library/os.html#os.listdir)在目錄和文件之間沒有區別,所以你的列表將會有(大部分爲空)的子目錄條目。 –
@ChristianKönig謝謝,修正 – Keatinge
你還可以用''os.path.splitext(f)[0]'](https://docs.python.org/3.6/library/os)交換你的'join/split'。 path.html#os.path.splitext),它負責處理一些特殊情況(基本名稱中的前導句點)。 –
您可以使用os.listdir內搭路徑作爲參數和返回文件和它目錄的列表。
>>> list_ = os.listdir("path/to/Data")
>>> list_
>>> ['abc.jpg', 'dn.jpg', 'ap.jpg']
通過這個清單,你只需要做哪些分割每個元素的理解列表「」 (點),除了最後一個元素的所有元素都加上''。 (點)並檢查元素是否是使用os.path.file()的文件。
>>> list_ = ['.'.join(x.split('.')[:-1]) for x in os.listdir("path/to/Data") if os.path.isfile(os.path.join('path/to/Data', x))]
>>> list_
>>> ['abc', 'dn', 'ap']
import os
from os import listdir
from os.path import isfile, join
def filesMinusExtension(path):
# os.path.splitext(f)[0] map with filename without extension with checking if file exists.
files = [os.path.splitext(f)[0] for f in listdir(path) if isfile(join(path, f))];
return files;
簡單,
l=os.listdir('path')
li=[x.split('.')[0] for x in l]
import os
filenames=next(os.walk(os.getcwd()))[2]
efn=[f.split('.')[0] for f in filenames]
os.getcwd() #for get current directory path
的[我如何列出一個目錄下的所有文件?]可能的複製(https://開頭計算器.com/questions/3207219/how-do-i-list-all-files-of-a-directory) –
爲了解壓文件名,看看這裏:[在Python中提取文件名的擴展名](https://stackoverflow.com/questions/541390/extracting-extension-from-filename-in-python) –
看看os .walk() –