本發明涉及數字系統中的文件夾的優化技術,尤其涉及基于文件夾創建對應樹形圖的方法和系統。
背景技術:
在個人數字設備(例如智能手機、平板電腦、移動硬盤等)以及網絡存儲設備(例如云盤等)經過長期使用后,人工建立或者自動生成的文件夾數量會越來越多,造成文件夾的嵌套層級也會越來越多。
文件夾嵌套等造成了文件管理上的混亂,導致用戶不容易找到所需的文件。而且,當用戶試圖以搜索方式找尋所需文件時,又往往會忘記文件名字而導致搜索無法有效進行,甚至有時候都不記得有這類文件的存在。
而傳統的數字設備或者網絡存儲設備上的文件管理通過采用pc系統的資源管理器,只能順著單一路徑展開文件所在文件夾的路徑地址。所以嵌套層級過多會導致通過這種操作方式來打開所需文件變得十分費時。
技術實現要素:
以下給出一個或多個方面的簡要概述以提供對這些方面的基本理解。此概述不是所有構想到的方面的詳盡綜覽,并且既非旨在指認出所有方面的關鍵性或決定性要素亦非試圖界定任何或所有方面的范圍。其唯一的目的是要以簡化形式給出一個或多個方面的一些概念以為稍后給出的更加詳細的描述之序。
本發明的目的在于提供了一種文件夾樹形圖自動創建方法和系統,隨時優化文件夾的嵌套,便于查找所需文件。
本發明的技術方案為:本發明揭示了一種文件夾樹形圖自動創建方法,包括:
讀取指定路徑的所有文件和文件夾的名字并將其轉換為字符串的形式,形成字符串文檔;
將字符串文檔轉化為樹狀結構,形成文件夾樹形圖。
根據本發明的文件夾樹形圖自動創建方法的一實施例,在形成字符串文檔的步驟包括:
調用python中的數據庫;
指定掃描路徑;
通過數據庫,遞歸讀入掃描路徑中的所有層級中的所有文件和文件夾得到名字,其中每一層級的文件以及文件夾用序號排列,子級文件或者文件夾相對于父級文件夾縮進;
用字符串變量存儲讀入的文件和文件夾的名字,構成字符串文檔。
根據本發明的文件夾樹形圖自動創建方法的一實施例,將字符串文檔轉化為樹狀結構的步驟包括:
讀取字符串文檔,通過按行劃分轉換成列表格式,構成列表變量;
初始化字典變量和結構層級變量;
基于列表變量和結構層級變量,檢測字符串文檔中的序號;
基于字典變量中的屬性,將字符串文檔按照序號進行分類存儲,更新字典變量為結構化字典變量;
將結構化字典變量轉化為樹狀結構并以樹形圖方式展現。
本發明還揭示了一種計算機存儲介質,存儲了計算機程序指令,計算機程序指令用于執行文件夾樹形圖自動創建方法中的步驟。
本發明還揭示了一種計算機系統,包括處理器和存儲器,存儲器上存儲計算機程序,計算機程序在處理器中運行成計算機指令,所述計算機指令用于執行文件夾樹形圖自動創建方法中的步驟。
本發明還揭示了一種文件夾樹形圖自動創建系統,包括:
字符串文檔轉化模塊,用于讀取指定路徑的所有文件和文件夾的名字并將其轉換為字符串的形式,形成字符串文檔;
樹狀結構轉化模塊,用于將字符串文檔轉化為樹狀結構,形成文件夾樹形圖。
根據本發明的文件夾樹形圖自動創建系統的一實施例,字符串文檔轉化模塊包括:
數據庫調用單元,用于調用python中的數據庫;
路徑指定單元,用于指定掃描路徑;
文件名讀取單元,通過數據庫,遞歸讀入掃描路徑中的所有層級中的所有文件和文件夾得到名字,其中每一層級的文件以及文件夾用序號排列,子級文件或者文件夾相對于父級文件夾縮進;
變量存儲單元,用字符串變量存儲讀入的文件和文件夾的名字,構成字符串文檔。
根據本發明的文件夾樹形圖自動創建系統的一實施例,樹狀結構轉化模塊包括:
列表變量構造單元,用于讀取字符串文檔,通過按行劃分轉換成列表格式,構成列表變量;
字典變量和結構層級變量初始化單元,用于初始化字典變量和結構層級變量;
字符串文檔序號檢測單元,用于基于列表變量和結構層級變量,檢測字符串文檔中的序號;
字典變量結構化單元,用于基于字典變量中的屬性,將字符串文檔按照序號進行分類存儲,更新字典變量為結構化字典變量;
樹形圖展現單元,用于將結構化字典變量轉化為樹狀結構并以樹形圖方式展現。
本發明對比現有技術有更好的技術效果:本發明借助數據庫讀取掃描路徑的所有文件以及文件夾的名字以形成文本,再將文本轉換為樹形結構,用這種方式自動生成各類數字設備、云盤中的嵌套的文件夾以及其中文件的樹形圖。
附圖說明
圖1示出了本發明的文件夾樹形圖自動創建方法的實施例的流程圖。
圖2至圖5示出了圖1所示的文件夾樹形圖自動創建方法中的步驟的細化子流程圖。
圖6示出了本發明的文件夾樹形圖自動創建系統的實施例的原理圖。
具體實施方式
在結合以下附圖閱讀本公開的實施例的詳細描述之后,能夠更好地理解本發明的上述特征和優點。在附圖中,各組件不一定是按比例繪制,并且具有類似的相關特性或特征的組件可能具有相同或相近的附圖標記。
圖1示出了本發明的文件夾樹形圖自動創建方法的實施例的流程。請參見圖1,下面是對本實施例的方法的步驟的詳述。
步驟s1:讀取指定路徑的所有文件和文件夾的名字并將其轉換為字符串的形式,形成字符串文檔。
這一步驟的實現進一步參見圖2所示。
步驟s11:調用python中的數據庫os。
步驟s12:指定掃描路徑。
步驟s13:通過數據庫os,用遞歸讀入掃描路徑中的所有層級中的所有文件和文件夾得到名字,其中每一層級的文件以及文件夾用序號排列,子級文件或者文件夾相對于父級文件夾縮進。
步驟s14:用字符串變量存儲讀入的文件和文件夾的名字,構成字符串文檔。
例如,讀好的字符串變量如以下示例。
1.biaoti
1.f1
1.f1.1.doc
2.f1.2.doc
3.f1.3.doc
4.f1.4
1.f1.4.1.doc
2.f1.4.2.doc
3.f1.4.3.doc
4.f1.4.4.doc
2.f2
1.f2.1.doc
2.f2.2.doc
3.f2.3.doc
4.f2.4.doc
3.f3
1.f3.1.doc
2.f3.2.doc
3.f3.3.doc
4.f3.4.doc
步驟s2:將字符串文檔轉化為樹狀結構,形成文件夾樹形圖。
這一步驟的實現進一步參見圖3所示。
步驟s21:讀取字符串文檔,通過按行劃分轉換成列表格式,構成列表變量document。
步驟s22:初始化字典變量e_new和結構層級變量level。
初始化字典變量e_new,其中包括name,doc,ch三種屬性,即e_new={'name':”,'doc':”,'ch':[]}。
初始化中間變量child以及child_document,即child=[],child_document=[]。
初始化結構層級level,即level=0。初始化字典變量e_new的屬性name,即e_new['name']='掃描結構化'。
步驟s23:基于列表變量和結構層級變量,檢測字符串文檔中的序號。
檢測字符串文檔序號可以通過data_check函數來實現,函數的輸入參數分別為document變量和level變量,輸出參數傳遞給e_new變量的doc屬性,即e_new['doc']、child以及child_document變量。
data_check函數的具體實現步驟如圖4所示。
步驟s231:將傳遞參數分別傳給document以及level變量。
步驟s232:初始化wiki_name,即wiki_name=[];初始化wiki_doc,即wiki_doc=[”foriinrange(200)];初始化d,即d=”;初始化index_1,即index_1='1.'
步驟s233:對document按行處理,每行利用find方法尋找index變量,若找到執行下一步;否則執行步驟s235。
這里的find方法是python內部的一個算法,目的是在字符串文本中找到目標字符串的起始位置。
步驟s234:將當前所在行的字符串變量,即document[i],讀入到wiki_name變量中;將index進行疊加。
步驟s235:若index為'1.',則將當前所在行的字符串變量,即document[i]讀入變量d中;若index不為'1.',則將當前行的字符串變量累加到變量wiki_doc中。
步驟s236:讀取document的下一行,即i=i+1。若document被讀完,則執行下一步,否則執行步驟s233。
步驟s237:返回變量d、wiki_name、wiki_doc以及level。
步驟s24:基于字典變量中的屬性,將字符串文檔按照序號進行分類存儲,更新字典變量為結構化字典變量。
將字符串文檔按照序號進行分類存儲通過structured_cycle函數來實現。該函數的輸入參數分別為::e_new的屬性ch,即e_new['ch']、child、child_document以及level變量。該函數的輸出參數傳遞給e_new的ch屬性,即e_new['ch']。
structured_cycle函數的具體實現步驟如圖5所示。
s241:將傳遞參數分別傳給e_new、child、child_document、level變量。
s242:初始化循環次數i,即i=0。
s243:將列表變量child的第i個元素,即child[i]賦值給name變量。
s244:若列表變量child_document的第i個元素,即child_document[i]為”,則執行下一步;否則執行步驟s246。
s245:將doc、child_document_next、child_next變量分別賦值”、[]、[]。
s246:執行data_check模塊,其中輸入參數分別為:child_document[i]以及level變量;輸出參數傳遞給:doc、child_next、child_document_next以及level變量。
s247:創建新的字典變量,即{'name':name,'doc':doc,'ch':[]},將新的字典變量添加到e_new中。
s248:若變量child_next為[],則執行下一步,否則執行步驟s2410。
s249:將變量level的值賦值給新的變量level_new并累加level_new,即level_new=level_new+1。用遞歸的方法重新執行structured_cycle模塊,其中輸入參數分別為:e_new第i個元素的屬性ch,即e_new[i]['ch']、child_next、child_document_next以及level_new變量;輸出參數傳遞給e_new第i個元素的ch屬性,即e_new[i]['ch']。
s2410:累加循環次數i,即i=i+1。若循環次數i等于變量child的元素個數,則執行下一步,否則執行步驟s243。
s2411:返回變量e_new。
步驟s25:將結構化字典變量轉化為樹狀結構并以樹形圖方式展現。
圖6示出了本發明的文件夾樹形圖自動創建系統的實施例的原理。請參見圖6,本實施例的系統包括:字符串文檔轉化模塊和樹狀結構轉化模塊。其中字符串文檔轉化模塊用于讀取指定路徑的所有文件和文件夾的名字并將其轉換為字符串的形式,形成字符串文檔。樹狀結構轉化模塊用于將字符串文檔轉化為樹狀結構,形成文件夾樹形圖。
字符串文檔轉化模塊包括:數據庫調用單元、路徑指定單元、文件名讀取單元、變量存儲單元。
數據庫調用單元用于調用python中的數據庫。路徑指定單元用于指定掃描路徑。文件名讀取單元用于通過數據庫,遞歸讀入掃描路徑中的所有層級中的所有文件和文件夾得到名字,其中每一層級的文件以及文件夾用序號排列,子級文件或者文件夾相對于父級文件夾縮進。變量存儲單元用字符串變量存儲讀入的文件和文件夾的名字,構成字符串文檔。
樹狀結構轉化模塊包括:列表變量構造單元、字典變量和結構層級變量初始化單元、字符串文檔序號檢測單元、字典變量結構化單元、樹形圖展現單元。
列表變量構造單元用于讀取字符串文檔,通過按行劃分轉換成列表格式,構成列表變量。字典變量和結構層級變量初始化單元,用于初始化字典變量和結構層級變量。字符串文檔序號檢測單元,用于基于列表變量和結構層級變量,檢測字符串文檔中的序號。字典變量結構化單元,用于基于字典變量中的屬性,將字符串文檔按照序號進行分類存儲,更新字典變量為結構化字典變量。樹形圖展現單元用于將結構化字典變量轉化為樹狀結構并以樹形圖方式展現。
此外,本發明還揭示了一種計算機存儲介質,其上計算機程序指令,計算機程序指令用于執行前述的如圖1至圖5所示的文件夾樹形圖自動創建方法中的步驟。
本發明還揭示了一種計算機系統,包括處理器和存儲器,存儲器上存儲計算機程序,計算機程序在處理器中運行成計算機指令,計算機指令用于執行前述的如圖1至圖5所示的文件夾樹形圖自動創建方法中的步驟。
盡管為使解釋簡單化將上述方法圖示并描述為一系列動作,但是應理解并領會,這些方法不受動作的次序所限,因為根據一個或多個實施例,一些動作可按不同次序發生和/或與來自本文中圖示和描述或本文中未圖示和描述但本領域技術人員可以理解的其他動作并發地發生。
本領域技術人員將進一步領會,結合本文中所公開的實施例來描述的各種解說性邏輯板塊、模塊、電路、和算法步驟可實現為電子硬件、計算機軟件、或這兩者的組合。為清楚地解說硬件與軟件的這一可互換性,各種解說性組件、框、模塊、電路、和步驟在上面是以其功能性的形式作一般化描述的。此類功能性是被實現為硬件還是軟件取決于具體應用和施加于整體系統的設計約束。技術人員對于每種特定應用可用不同的方式來實現所描述的功能性,但這樣的實現決策不應被解讀成導致脫離了本發明的范圍。
結合本文所公開的實施例描述的各種解說性邏輯板塊、模塊、和電路可用通用處理器、數字信號處理器(dsp)、專用集成電路(asic)、現場可編程門陣列(fpga)或其它可編程邏輯器件、分立的門或晶體管邏輯、分立的硬件組件、或其設計成執行本文所描述功能的任何組合來實現或執行。通用處理器可以是微處理器,但在替換方案中,該處理器可以是任何常規的處理器、控制器、微控制器、或狀態機。處理器還可以被實現為計算設備的組合,例如dsp與微處理器的組合、多個微處理器、與dsp核心協作的一個或多個微處理器、或任何其他此類配置。
結合本文中公開的實施例描述的方法或算法的步驟可直接在硬件中、在由處理器執行的軟件模塊中、或在這兩者的組合中體現。軟件模塊可駐留在ram存儲器、閃存、rom存儲器、eprom存儲器、eeprom存儲器、寄存器、硬盤、可移動盤、cd-rom、或本領域中所知的任何其他形式的存儲介質中。示例性存儲介質耦合到處理器以使得該處理器能從/向該存儲介質讀取和寫入信息。在替換方案中,存儲介質可以被整合到處理器。處理器和存儲介質可駐留在asic中。asic可駐留在用戶終端中。在替換方案中,處理器和存儲介質可作為分立組件駐留在用戶終端中。
在一個或多個示例性實施例中,所描述的功能可在硬件、軟件、固件或其任何組合中實現。如果在軟件中實現為計算機程序產品,則各功能可以作為一條或更多條指令或代碼存儲在計算機可讀介質上或藉其進行傳送。計算機可讀介質包括計算機存儲介質和通信介質兩者,其包括促成計算機程序從一地向另一地轉移的任何介質。存儲介質可以是能被計算機訪問的任何可用介質。作為示例而非限定,這樣的計算機可讀介質可包括ram、rom、eeprom、cd-rom或其它光盤存儲、磁盤存儲或其它磁存儲設備、或能被用來攜帶或存儲指令或數據結構形式的合意程序代碼且能被計算機訪問的任何其它介質。任何連接也被正當地稱為計算機可讀介質。例如,如果軟件是使用同軸電纜、光纖電纜、雙絞線、數字訂戶線(dsl)、或諸如紅外、無線電、以及微波之類的無線技術從web網站、服務器、或其它遠程源傳送而來,則該同軸電纜、光纖電纜、雙絞線、dsl、或諸如紅外、無線電、以及微波之類的無線技術就被包括在介質的定義之中。如本文中所使用的盤(disk)和碟(disc)包括壓縮碟(cd)、激光碟、光碟、數字多用碟(dvd)、軟盤和藍光碟,其中盤(disk)往往以磁的方式再現數據,而碟(disc)用激光以光學方式再現數據。上述的組合也應被包括在計算機可讀介質的范圍內。
提供對本公開的先前描述是為使得本領域任何技術人員皆能夠制作或使用本公開。對本公開的各種修改對本領域技術人員來說都將是顯而易見的,且本文中所定義的普適原理可被應用到其他變體而不會脫離本公開的精神或范圍。由此,本公開并非旨在被限定于本文中所描述的示例和設計,而是應被授予與本文中所公開的原理和新穎性特征相一致的最廣范圍。