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

來源:互聯網
上載者:User

標籤:base   use   ring   image   類型   iostream   odi   string   clear   

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

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     else31     {32         printf("Listing of files:\n");33 34         int i = 0;35         string newfullFilePath;36         string oldfullFilePath;37         string str_name;38         do39         {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             else63                 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 }

 

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

相關文章

Alibaba Cloud 10 Year Anniversary

With You, We are Shaping a Digital World, 2009-2019

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。