批量取出文件夹中图片的名字存进文本,并去命名新的文件夹下的图片
Posted wall-e2
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了批量取出文件夹中图片的名字存进文本,并去命名新的文件夹下的图片相关的知识,希望对你有一定的参考价值。
这个任务为具体分为两步完成的:
1、取出文件中的图片的名字存入到文本中;
2、逐行取出文本中的名字去逐个命名新文件夹下的图片;
任务一:
1 # -*- coding:utf-8 -*- 2 import sys 3 sys.path.append(‘D: ensorflowinstalllibs‘) 4 import os #os:操作系统相关的信息模块 5 import random #导入随机函数 6 #存放原始图片地址 7 #data_base_dir = r"F:underwater slamVOCVOC2007JPEGImages" 8 data_base_dir = r"F:1picture" 9 file_list = [] #建立列表,用于保存图片信息 10 #读取图片文件,并将图片地址、图片名和标签写到txt文件中 11 write_file_name = r‘F:dir.txt‘ 12 write_file = open(write_file_name, "w") #以只写方式打开write_file_name文件 13 for file in os.listdir(data_base_dir): #file为current_dir当前目录下图片名 14 if file.endswith(".jpg"): #如果file以jpg结尾 15 write_name = file #图片路径 + 图片名 + 标签 16 file_list.append(write_name) #将write_name添加到file_list列表最后 17 sorted(file_list) #将列表中所有元素随机排列 18 number_of_lines = len(file_list) #列表中元素个数 19 #将图片信息写入txt文件中,逐行写入 20 for current_line in range(number_of_lines): 21 write_file.write(file_list[current_line] + ‘ ‘) 22 #关闭文件 23 write_file.close()
任务二:
1 #include <iostream> 2 #include <io.h> //对系统文件进行操作的头文件 3 #include <string> 4 #include <sstream> 5 #include<vector> 6 #include <fstream> 7 8 using namespace std; 9 10 const string FileType = ".jpg"; // 需要查找的文件类型 11 12 int main() 13 { 14 _finddata_t c_file; // 查找文件的类 15 16 string File_Directory = "F:\1picture"; //文件夹目录 17 string strFlie = "F:\draft\draft\rgbd_dataset_freiburg2_desk\dir.txt"; 18 ifstream f; 19 20 f.open(strFlie.c_str()); 21 22 string buffer = File_Directory + "\*" + FileType; 23 24 //long hFile; //win7系统,_findnext()返回类型可以是long型 25 intptr_t hFile; //win10系统 ,_findnext()返回类型为intptr_t ,不能是long型 26 hFile = _findfirst(buffer.c_str(), &c_file); //找第一个文件 27 28 if (hFile == -1L) // 检查文件夹目录下存在需要查找的文件 29 printf("No %s files in current directory! ", FileType); 30 else 31 { 32 printf("Listing of files: "); 33 34 int i = 0; 35 string newfullFilePath; 36 string oldfullFilePath; 37 string str_name; 38 do 39 { 40 oldfullFilePath.clear(); 41 newfullFilePath.clear(); 42 str_name.clear(); 43 44 getline(f, str_name); 45 if (str_name == "") 46 { 47 cout << "文件数大于文件名" << endl; 48 break; 49 } 50 51 //旧名字 52 oldfullFilePath = File_Directory + "\" + c_file.name; 53 //新名字 54 newfullFilePath = File_Directory + "\" + str_name + FileType; 55 56 /*重命名函数rename(const char* _OldFileName,const char* _NewFileName) 57 第一个参数为旧文件路径,第二个参数为新文件路径*/ 58 int c = rename(oldfullFilePath.c_str(), newfullFilePath.c_str()); 59 60 if (c == 0) 61 puts("File successfully renamed"); 62 else 63 perror("Error renaming file"); 64 65 } while (_findnext(hFile, &c_file) == 0); //如果找到下个文件的名字成功的话就返回0,否则返回-1 66 _findclose(hFile); 67 } 68 system("pause"); 69 return 0; 70 }
以上是关于批量取出文件夹中图片的名字存进文本,并去命名新的文件夹下的图片的主要内容,如果未能解决你的问题,请参考以下文章
Android studio 中如何批量引入图片。一大堆图片!
如何 批量 给 某个文件夹 里面 的几十个文件的名字加入个前缀或后缀
如何批量识别图像中的文字并对图片进行识别的文字图片文件重命名,也可以识别后更改文件夹也支持多级目录