Python實現(xiàn)批量獲取當前文件夾下的文件名
最近,在和網(wǎng)友交流時,對方推薦了一個視頻,我打開一看,是一個手工獲取當前目錄下所有文件名的手機視頻。用的方法是在win11中復制所有文件的路徑,然后粘貼到Excel當中,通過查找替換和分列的方法,清除冗余部分,最后得到文件名。
這種方法很巧妙,沒有借助于編程或者不太常見的軟件就獲取了文件名。我隨后也探索了一些簡便的方法和大家一起來分享。
先說一下要求:獲取當前文件夾下的所有png文件,不包括擴展名。
一、復制路徑法——簡單方便
使用快捷鍵ctrl+a來全先當前文件,然后選擇資源管理器上方的【復制路徑】,得到所有文件的路徑。

獲取文件路徑
接著,把這些路徑放到Excel文件當中,通過【查找替換】獲取所有文件名,這是可以把不是png的文件刪除,然后再把A列按照【.】分列,這樣就得到了所有圖片的文件名。

查找替換
這種方法簡單、實用,沒有什么技術含量,小白也能輕松上手。如果當前目錄下多種類型文件混雜,那么還要一行一行刪除不符合要求的路徑。解決的辦法是把文件按照類型排列,然后再選中獲取路徑。
二、Dos命令法
Dos命令是windows不斷更新卻從未放棄的內置功能,想當前我學計算機可是從dos開始學起,它的命令有時非常強大,比在windows下操作簡單多了。
為了獲取當前目錄下的文件名,我們可以在當前目錄上方輸入【cmd】,進入dos界面。

在當前目錄下進入dos
然后,輸入命令:
dir *.png /b > filename.csv

把文件名寫入csv文件
這樣,我們就把擴展名為png的所有文件的文件名寫入到了filename.csv文件當中。我們可以用Excel打開這個csv文件,再進行分列就可以了。

dos命令寫入當前目錄下的文件名
這種方法明顯減少了操作步驟,不僅對文件名進行了篩選,也不用再復制和粘貼了,幾乎是一步到位把文件名寫入到了Excel文件當中。當然,這種方法雖然簡便,但是無法提取子目錄中的文件名。
三、批處理命令法
批處理命令比一般的dos命令更強大,因為它可以便歷子目錄,甚至還可以批量創(chuàng)建文件,比如上面的寫入文件名到csv文件中的dos命令還可以改寫為以下批處理命令:
for %F in (*.png) do @echo %F>>file.csv
以上命令的功能是列出當前目錄下所有 .png 文件的文件名(擴展名),并將結果追加到 filename.csv文件中。
如果不想帶擴展名,也可以用以下代碼一鍵實現(xiàn):
for %F in (*.png) do @echo %~nF>>file.csv
在上面的二條命令中, for 循環(huán)來遍歷當前目錄下所有的 .png 文件。
for %F in (*.png):這是 for 命令的語法,它會遍歷當前目錄下所有文件名匹配 *.png 的文件。 %F 是循環(huán)變量,它代表當前正在處理的文件名。
do @echo %~nF>>file.txt:do 關鍵字指示在每次迭代時要執(zhí)行的命令。@echo %~nF 用于打印當前文件名的文件名部分(不帶擴展名)。
%~nF 是獲取 %F 的文件名部分的語法。
>>file.txt 表示將輸出追加到 file.txt 文件末尾,而不是覆蓋原有內容。
四、Python命令法
如果電腦上安裝的有python,還可以使用Python編程的方法,導入os或者pathlib模塊,通過遍歷列表中的每一個元素,把它們追加到Excel表中,然后再保存即可輕松實現(xiàn)指定文件名。
#導入模塊
import os
from openpyxl import Workbook
# 創(chuàng)建一個工作簿對象
wb = Workbook()
# 激活第一個工作表
ws = wb.active
# 你的列表數(shù)據(jù)
data = [file for file in os.listdir() if file.endswith(".png")]
# 如果不要擴展名,則可以這樣寫:
# data = [os.path.splitext(file)[0],for file in os.listdir() if file.endswith(".png")]
# 將數(shù)據(jù)逐行寫入工作表
for row in data:
ws.append([row])
# 保存工作簿
wb.save('output.xlsx')五、VBA 方法
如果經(jīng)常需要獲取當前目錄下的所有文件名,就可以用下面的VBA代碼:
Sub GetFileNames()
Dim FileSystem As Object
Dim Folder As Object
Dim File As Object
Dim i As Integer
' 清空Sheet1中的數(shù)據(jù)
Sheets("Sheet1").Cells.Clear
' 創(chuàng)建FileSystem對象
Set FileSystem = CreateObject("Scripting.FileSystemObject")
' 獲取當前目錄路徑
Set Folder = FileSystem.GetFolder(ThisWorkbook.Path)
' 在Sheet1中顯示文件名
i = 1
For Each File In Folder.Files
Sheets("Sheet1").Cells(i, 1).Value = File.Name
i = i + 1
Next File
End Sub我們可以將上面的代碼復制并粘貼到 Excel 的 VBA 編輯器中(按下 Alt + F11 打開),然后在工程資源管理器中的 Microsoft Excel Objects 中找到 ThisWorkbook,雙擊打開,將代碼粘貼到打開的代碼窗口中。然后關閉 VBA 編輯器,保存文件。
每當你運行 GetFileNames這個宏時,它將在 Sheet1 中列出當前目錄下的所有文件名。如下圖所示:

這種方法是一步到位,輕松獲取了所有的文件名。不過要注意,VBA運行時會清空Sheet1中的數(shù)據(jù),所以保證當前工作表是sheet1,然后沒有其它重要數(shù)據(jù)。
六、學后反思
同一功能我們可以采用多種方法來實現(xiàn),從手工復制粘貼到后來的dos命令或者編程,我都可以輕松實現(xiàn)達到最后的目標。大家可以根據(jù)自己喜好來進行取舍。第一種方法簡單好記,建議小白學習。第二種和第三種方法涉及dos命令,需要大家記憶一下。第三種和第四種分別保存在py和xls文件中,基本上是開箱即用。
到此這篇關于Python實現(xiàn)批量獲取當前文件夾下的文件名的文章就介紹到這了,更多相關Python獲取文件名內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Pytorch?nn.Unfold()?與?nn.Fold()圖碼詳解(最新推薦)
這篇文章主要介紹了Pytorch?nn.Unfold()?與?nn.Fold()圖碼詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05
Python中sklearn實現(xiàn)交叉驗證示例分析
這篇文章主要介紹了Python中sklearn實現(xiàn)交叉驗證,本文python的版本為3.8,各個版本之間函數(shù)名字略有不同,但是原理都是一樣的,集成開發(fā)環(huán)境使用的是Anaconda的Spyder,需要的朋友可以參考下2023-08-08
python實現(xiàn)按任意鍵繼續(xù)執(zhí)行程序
本文給大家分享的是如何使用Python腳本實現(xiàn)按任意鍵繼續(xù)執(zhí)行程序的代碼,非常的簡單實用,有需要的小伙伴可以參考下2016-12-12
VTK與Python實現(xiàn)機械臂三維模型可視化詳解
這篇文章主要介紹了VTK與Python實現(xiàn)機械臂三維模型可視化詳解,具有一定借鑒價值,需要的朋友可以參考下。2017-12-12

