批量取出文件夾中圖片的名字存進文本,並去命名新的文件夾下的圖片


這個任務為具體分為兩步完成的:

1、取出文件中的圖片的名字存入到文本中;

2、逐行取出文本中的名字去逐個命名新文件夾下的圖片;

任務一:

 1 # -*- coding:utf-8 -*-
 2 import sys
 3 sys.path.append('D:\tensorflow\install\libs')
 4 import os #os:操作系統相關的信息模塊
 5 import random #導入隨機函數
 6 #存放原始圖片地址
 7 #data_base_dir = r"F:\underwater slam\VOC\VOC2007\JPEGImages"
 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] + '\n')
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!\n", FileType);
30     else
31     {
32         printf("Listing of files:\n");
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 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM