IOS-find images that are not in use
Last Update:2015-07-24
Source: Internet
Author: User
<span id="Label3"></p><p><p>Implementation details are in the code, help-h.</p></p><pre class="prettyprint"><code class=" hljs python"><span class="hljs-comment"><span class="hljs-comment">#-*-coding:utf-8-*-</span></span><span class="hljs-string">"" <span class="hljs-string">Check if the iOS app picture is using 1. Read valid files: pictures (. png,. jpg), files (. h,. m,. xib,. c,. cpp,. json); 2. Search for images in files, remove suffixes and @2x, adapt to string concatenation, discard the last ' _ '-' after ' parts; note: the case of string concatenation, such as a_b_%zi_c_d, needs to be checked and then Deleted. time complexity o (n^2)-find, each file looks for each picture; "" </span></span>__author__ =<span class="hljs-string"><span class="hljs-string">' C.l.wang '</span></span><span class="hljs-keyword"><span class="hljs-keyword">Import</span></span>Os<span class="hljs-keyword"><span class="hljs-keyword">Import</span></span>Sys<span class="hljs-keyword"><span class="hljs-keyword">Import</span></span>Getopt<span class="hljs-comment"><span class="hljs-comment"># List all the pictures in the folder</span></span><span class="hljs-function"><span class="hljs-function"> <span class="hljs-keyword">def</span> <span class="hljs-title">list_dictionary_images</span><span class="hljs-params">(root_dir)</span>:</span></span>Names_list = [] Paths_list = []<span class="hljs-keyword"><span class="hljs-keyword"></span> for</span>parent, dirnames, FileNames<span class="hljs-keyword"><span class="hljs-keyword">inch</span></span>Os.walk (root_dir):<span class="hljs-keyword"><span class="hljs-keyword"></span> for</span>Name<span class="hljs-keyword"><span class="hljs-keyword">inch</span></span>Filenames:ext = [<span class="hljs-string"><span class="hljs-string">'. PNG '</span></span>,<span class="hljs-string"><span class="hljs-string">'. jpg '</span></span>]<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>Name.endswith (tuple (ext)): names_list.append (name) paths_list.append (os.path.join (parent, na Me))<span class="hljs-keyword"><span class="hljs-keyword">return</span></span>[paths_list, names_list]<span class="hljs-comment"><span class="hljs-comment"># List all the code in the folder</span></span><span class="hljs-function"><span class="hljs-function"> <span class="hljs-keyword">def</span> <span class="hljs-title">list_dictionary_codes</span><span class="hljs-params">(root_dir)</span>:</span></span>Paths_list = []<span class="hljs-keyword"><span class="hljs-keyword"></span> for</span>parent, dirnames, FileNames<span class="hljs-keyword"><span class="hljs-keyword">inch</span></span>Os.walk (root_dir):<span class="hljs-keyword"><span class="hljs-keyword"></span> for</span>Name<span class="hljs-keyword"><span class="hljs-keyword">inch</span></span>Filenames:ext = [<span class="hljs-string"><span class="hljs-string">'. h '</span></span>,<span class="hljs-string"><span class="hljs-string">'. m '</span></span>,<span class="hljs-string"><span class="hljs-string">'. xib '</span></span>,<span class="hljs-string"><span class="hljs-string">'. json '</span></span>,<span class="hljs-string"><span class="hljs-string">'. C '</span></span>,<span class="hljs-string"><span class="hljs-string">'. CPP '</span></span>,<span class="hljs-string"><span class="hljs-string">'. mm '</span></span>,<span class="hljs-string"><span class="hljs-string">'. MD '</span></span>]<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>Name.endswith (tuple (ext)): paths_list.append (os.path.join (parent, Name))<span class="hljs-keyword"><span class="hljs-keyword">return</span></span>Paths_list<span class="hljs-comment"><span class="hljs-comment"># Find Names in Files</span></span><span class="hljs-function"><span class="hljs-function"> <span class="hljs-keyword">def</span> <span class="hljs-title">search_name_in_file</span><span class="hljs-params">(search_name, file_name)</span>:</span></span> <span class="hljs-comment"><span class="hljs-comment"># Stitching String Exceptions</span></span>Short_name_1 = search_name[::-<span class="hljs-number"><span class="hljs-number">1</span></span>].split (<span class="hljs-string"><span class="hljs-string">' _ '</span></span>,<span class="hljs-number"><span class="hljs-number">1</span></span>) short_name_2 = search_name[::-<span class="hljs-number"><span class="hljs-number">1</span></span>].split (<span class="hljs-string"><span class="hljs-string">'-'</span></span>,<span class="hljs-number"><span class="hljs-number">1</span></span>)<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>Len (short_name_1) = =<span class="hljs-number"><span class="hljs-number">2</span></span>: Search_name = short_name_1[<span class="hljs-number"><span class="hljs-number">1</span></span>][::-<span class="hljs-number"><span class="hljs-number">1</span></span>]<span class="hljs-keyword"><span class="hljs-keyword">elif</span></span>Len (short_name_2) = =<span class="hljs-number"><span class="hljs-number">2</span></span>: Search_name = short_name_2[<span class="hljs-number"><span class="hljs-number">1</span></span>][::-<span class="hljs-number"><span class="hljs-number">1</span></span>]<span class="hljs-comment"><span class="hljs-comment"># Reference Image Special</span> case</span>Search_name =<span class="hljs-string"><span class="hljs-string">' "'</span></span>+ Search_name file_object = Open (file_name)<span class="hljs-keyword"><span class="hljs-keyword">Try</span></span>: All_the_text = File_object.read ()<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>All_the_text.find (search_name) ><span class="hljs-number"><span class="hljs-number">0</span></span>:<span class="hljs-keyword"><span class="hljs-keyword">return</span></span> <span class="hljs-keyword"><span class="hljs-keyword">True</span></span> <span class="hljs-keyword"><span class="hljs-keyword">Else</span></span>:<span class="hljs-keyword"><span class="hljs-keyword">return</span></span> <span class="hljs-keyword"><span class="hljs-keyword">False</span></span> <span class="hljs-keyword"><span class="hljs-keyword">finally</span></span>: File_object.close ()<span class="hljs-comment"><span class="hljs-comment"># canonical Name</span></span><span class="hljs-function"><span class="hljs-function"> <span class="hljs-keyword">def</span> <span class="hljs-title">normalize_name</span><span class="hljs-params">(raw_name)</span>:</span></span>Raw_name = Raw_name.replace (<span class="hljs-string"><span class="hljs-string">' @2x '</span></span>,<span class="hljs-string"><span class="hljs-string">"'</span></span>) Raw_name = Raw_name.replace (<span class="hljs-string"><span class="hljs-string">'. PNG '</span></span>,<span class="hljs-string"><span class="hljs-string">"'</span></span>) Raw_name = Raw_name.replace (<span class="hljs-string"><span class="hljs-string">'. jpg '</span></span>,<span class="hljs-string"><span class="hljs-string">"'</span></span>)<span class="hljs-keyword"><span class="hljs-keyword">return</span></span>Raw_name<span class="hljs-comment"><span class="hljs-comment"># List Names that do not appear in the file</span></span><span class="hljs-function"><span class="hljs-function"> <span class="hljs-keyword">def</span> <span class="hljs-title">list_unused_names</span><span class="hljs-params">(names_dict, file_name)</span>:</span></span> <span class="hljs-keyword"><span class="hljs-keyword"></span> for</span>name, Path<span class="hljs-keyword"><span class="hljs-keyword">inch</span></span>Names_dict.items ():<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>Search_name_in_file (normalize_name (name), file_name):<span class="hljs-keyword"><span class="hljs-keyword">del</span></span>names_dict[name]<span class="hljs-keyword"><span class="hljs-keyword">return</span></span>Names_dict<span class="hljs-comment"><span class="hljs-comment"># Find Unused pictures</span></span><span class="hljs-function"><span class="hljs-function"> <span class="hljs-keyword">def</span> <span class="hljs-title">search_unused_images</span><span class="hljs-params">(image_folder, file_folder)</span>:</span></span>[image_paths, image_names] = list_dictionary_images (image_folder) file_paths = List_dictionary_codes (file_folder) im Ages_dict = dict (zip (image_names, IMAGE_PATHS))<span class="hljs-keyword"><span class="hljs-keyword"></span> for</span>File_path<span class="hljs-keyword"><span class="hljs-keyword">inch</span></span>File_paths:images_dict = List_unused_names (images_dict, File_path)<span class="hljs-keyword"><span class="hljs-keyword">return</span></span>Images_dict<span class="hljs-function"><span class="hljs-function"> <span class="hljs-keyword">def</span> <span class="hljs-title">main</span><span class="hljs-params">(argv)</span>:</span></span>Image_dir =<span class="hljs-string"><span class="hljs-string">"'</span></span> <span class="hljs-comment"><span class="hljs-comment"># Pictures folder</span></span>Code_dir =<span class="hljs-string"><span class="hljs-string">"'</span></span> <span class="hljs-comment"><span class="hljs-comment"># code folder</span></span>Out_put =<span class="hljs-string"><span class="hljs-string">"'</span></span> <span class="hljs-comment"><span class="hljs-comment"># output File</span></span>result = List ()<span class="hljs-keyword"><span class="hljs-keyword">Try</span></span>: opts, args = getopt.getopt (argv,<span class="hljs-string"><span class="hljs-string">"hi:c:o:"</span></span>, [<span class="hljs-string"><span class="hljs-string">"image_dir="</span></span>,<span class="hljs-string"><span class="hljs-string">"code_dir="</span></span>,<span class="hljs-string"><span class="hljs-string">"out_put="</span></span>])<span class="hljs-keyword"><span class="hljs-keyword">except</span></span>Getopt. Getopterror:<span class="hljs-keyword"><span class="hljs-keyword">Print</span></span> <span class="hljs-string"><span class="hljs-string">' searchunusedimages.py-i <image_dir>-c <code_dir>-o <out_put> '</span></span>Sys.exit (<span class="hljs-number"><span class="hljs-number">2</span></span>)<span class="hljs-keyword"><span class="hljs-keyword"></span> for</span>opt, Arg<span class="hljs-keyword"><span class="hljs-keyword">inch</span></span>OPTs<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>opt = =<span class="hljs-string"><span class="hljs-string">'-h '</span></span>:<span class="hljs-keyword"><span class="hljs-keyword">Print</span></span> <span class="hljs-string"><span class="hljs-string">' searchunusedimages.py-i <image_dir>-c <code_dir>-o <out_put> '</span></span>Sys.exit ()<span class="hljs-keyword"><span class="hljs-keyword">elif</span></span>Opt<span class="hljs-keyword"><span class="hljs-keyword">inch</span></span>(<span class="hljs-string"><span class="hljs-string">"-i."</span></span>,<span class="hljs-string"><span class="hljs-string">"--image_dir"</span></span>): Image_dir = arg<span class="hljs-keyword"><span class="hljs-keyword">elif</span></span>Opt<span class="hljs-keyword"><span class="hljs-keyword">inch</span></span>(<span class="hljs-string"><span class="hljs-string">"-c"</span></span>,<span class="hljs-string"><span class="hljs-string">"--code_dir"</span></span>): Code_dir = arg<span class="hljs-keyword"><span class="hljs-keyword">elif</span></span>Opt<span class="hljs-keyword"><span class="hljs-keyword">inch</span></span>(<span class="hljs-string"><span class="hljs-string">"-o"</span></span>,<span class="hljs-string"><span class="hljs-string">"--out_put"</span></span>): Out_put = arg out_file = Open (out_put,<span class="hljs-string"><span class="hljs-string">' W '</span></span>)<span class="hljs-keyword"><span class="hljs-keyword">Print</span></span> <span class="hljs-string"><span class="hljs-string">' Scan Start. '</span></span> <span class="hljs-keyword"><span class="hljs-keyword"></span> for</span>name, Path<span class="hljs-keyword"><span class="hljs-keyword">inch</span></span>Search_unused_images (image_dir, code_dir). Items (): result.append (path)<span class="hljs-keyword"><span class="hljs-keyword"></span> for</span>Sort_path<span class="hljs-keyword"><span class="hljs-keyword">inch</span></span>Sorted (result):<span class="hljs-keyword"><span class="hljs-keyword">Print</span></span>>> out_file, Sort_path<span class="hljs-keyword"><span class="hljs-keyword">Print</span></span> <span class="hljs-string"><span class="hljs-string">' Scan over. '</span></span>Out_file.close ()<span class="hljs-keyword"><span class="hljs-keyword">if</span></span>__name__ = =<span class="hljs-string"><span class="hljs-string">"__main__"</span></span>: Main (sys.argv[<span class="hljs-number"><span class="hljs-number">1</span></span>:])</code></pre> <p style="font-size:12px;"><p style="font-size:12px;">Copyright Notice: This article for Bo Master original article, without Bo Master permission not Reproduced.</p></p> <p><p>IOS-find images that are not in use</p></p></span>