想大批量提取文件图片名,提取出来保存到.txt文件中,提取方法有很多,但是多数方法提取出来之后,图片名是乱序的,不是我们自己预想的顺序排列。我自也试了一些方法,总结如下。
这种方法先Win + R,输入cmd打开dos命令窗口,依次输入指令进入到图片文件夹下,具体见下:
运行后的结果见下:
这种方法提取出来的图片名称就是乱序的。
这种方法参考了另外一位博主提供的方法,总结的很好,博主的链接为:添加链接描述
我自己也跟着尝试了,可以按顺序提取出图片名,代码及结果见下:
import numpy as np
import os
picturePath = './database/INF2True_Tree/trainA'
savePath = "./datasets/metas/INF2True_Tree/1/at_A_trian2.txt" # 图片名提取出来后存放的路径 savePath = './pictures/at.txt' #读取图片的名字,保存到txt文件
file_txt = open(savePath,'w') #打开文件,开始文件不存在,当运行这条语句后,会在pictures文件夹里生成txt文件
fileName = os.listdir(picturePath) ## 遍历文件夹中的图片名
fileName.sort(key=lambda x:int(x[:-4])) # 倒着数第四位'.'为分界线,按照‘.’左边的数字从小到大排序
for fi in fileName:
if fi.endswith(".jpg"): #文件是以jpg结尾的
file_txt.write(fi + '\n') # 把文件存入指定的文件夹,存入的内容为图片的名字+每个图片的第三个字符
print(fi)
我自己根据网上提供的资料,总结了下面的写法,可以按照顺序提取图片名,具体代码见下:
import os
import natsort
picturePath = './database/INF2True_Tree/trainA' # 图片文件的路径
savePath = "./datasets/metas/INF2True_Tree/1/at_A_trian1.txt" # 图片名提取出来后存放的路径 savePath = './pictures/at.txt' #读取图片的名字,保存到txt文件
file_txt = open(savePath,'w') #打开文件,开始文件不存在,当运行这条语句后,会在pictures文件夹里生成txt文件
fileName = os.listdir(picturePath) # 遍历文件夹中的图片名
fileName_sort =natsort.natsorted(fileName) # 使用natsort库对文件名排序
for fi in fileName_sort: # 用for循环遍历排序后的文件名
if fi.endswith(".jpg"): # 如果文件是以jpg结尾的
file_txt.write(fi +'\n') # 把文件存入指定的文件夹,存入的内容为图片的名字+每个图片的第三个字符
具体实现效果见下:
以上就是批量提取图片文件名使用Python中os.listdir( )函数时出现文件名乱序,非预想排序的解决方法,方法二和方法三都可以较好的实现按顺序提取图片名,学者自行选择。希望我总结的教程能帮助到你,多多支持,谢谢!