Python实现批量获取当前文件夹下的文件名
作者:PythonFun
最近,在和网友交流时,对方推荐了一个视频,我打开一看,是一个手工获取当前目录下所有文件名的手机视频。用的方法是在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命令更强大,因为它可以便历子目录,甚至还可以批量创建文件,比如上面的写入文件名到csv文件中的dos命令还可以改写为以下批处理命令:
for %F in (*.png) do @echo %F>>file.csv
以上命令的功能是列出当前目录下所有 .png 文件的文件名(扩展名),并将结果追加到 filename.csv文件中。
如果不想带扩展名,也可以用以下代码一键实现:
for %F in (*.png) do @echo %~nF>>file.csv
在上面的二条命令中, for 循环来遍历当前目录下所有的 .png 文件。
for %F in (*.png):这是 for 命令的语法,它会遍历当前目录下所有文件名匹配 *.png 的文件。 %F 是循环变量,它代表当前正在处理的文件名。
do @echo %~nF>>file.txt:do 关键字指示在每次迭代时要执行的命令。@echo %~nF 用于打印当前文件名的文件名部分(不带扩展名)。
%~nF 是获取 %F 的文件名部分的语法。
>>file.txt 表示将输出追加到 file.txt 文件末尾,而不是覆盖原有内容。
四、Python命令法
如果电脑上安装的有python,还可以使用Python编程的方法,导入os或者pathlib模块,通过遍历列表中的每一个元素,把它们追加到Excel表中,然后再保存即可轻松实现指定文件名。
#导入模块 import os from openpyxl import Workbook # 创建一个工作簿对象 wb = Workbook() # 激活第一个工作表 ws = wb.active # 你的列表数据 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")] # 将数据逐行写入工作表 for row in data: ws.append([row]) # 保存工作簿 wb.save('output.xlsx')
五、VBA 方法
如果经常需要获取当前目录下的所有文件名,就可以用下面的VBA代码:
Sub GetFileNames() Dim FileSystem As Object Dim Folder As Object Dim File As Object Dim i As Integer ' 清空Sheet1中的数据 Sheets("Sheet1").Cells.Clear ' 创建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中的数据,所以保证当前工作表是sheet1,然后没有其它重要数据。
六、学后反思
同一功能我们可以采用多种方法来实现,从手工复制粘贴到后来的dos命令或者编程,我都可以轻松实现达到最后的目标。大家可以根据自己喜好来进行取舍。第一种方法简单好记,建议小白学习。第二种和第三种方法涉及dos命令,需要大家记忆一下。第三种和第四种分别保存在py和xls文件中,基本上是开箱即用。
到此这篇关于Python实现批量获取当前文件夹下的文件名的文章就介绍到这了,更多相关Python获取文件名内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!