【原創(chuàng)】python3:文件樹型結構拷貝工具

本文為個人原創(chuàng),歡迎轉載,但請務必在明顯位置注明出處!

本文所有源碼發(fā)布于:https://github.com/qiuyi943/FileExt

http://m.itdecent.cn/writer#/notebooks/5989464/notes/5526124


1、概述

其實在為這篇博文起標題的時候有點糾結,不知當前的標題能否明確概括本文介紹的這個工具的功能。也許結合以下場景的描述能夠幫助大家了解這個工具到底是干什么用的。

假設有一個文件夾“1”,其樹型結構如下所示

1
├── 2
│   └── 3
│       ├── 4
│       │   └── D.txt
│       ├── A.txt
│       ├── B.txt
│       └── C.txt
├── 5
│   ├── 6
│   │   ├── 7
│   │   │   └── F.txt
│   │   └── G.txt
│   └── E.txt
├── 8
│   └── H.txt
└── I.txt

此時, 有一個file.list文件里面記錄了想要拷貝的文件(可以是相對路徑或者絕對路徑)

./2/3/A.txt
./8/H.txt
./I.txt
./5/6/G.txt

然后使用本文介紹的工具能夠基于源文件夾“1”的樹形結構,并按照file.list的內(nèi)容,創(chuàng)建一個新的樹型文件夾“1_[datatime]”,其結構如下所示

1_20160830014128/
├── 2
│   └── 3
│       └── A.txt
├── 5
│   └── 6
│       └── G.txt
├── 8
│   └── H.txt
└── I.txt

2、使用場景

該工具用于將你感興趣的文件從一個復雜的樹型結構路徑中摘取出來,并通過創(chuàng)建另外一個完備的樹型結構路徑來保存這些文件。例如,Android 的一個模塊中可能會編譯出多個JNI庫文件、bin文件以及app文件(可能不常見,但博主現(xiàn)在維護的模塊卻是如此);如果每次對該模塊進行整編,就會在多個路徑中生成多個文件,當對外分發(fā)時需要創(chuàng)建一個跟源路徑相同的文件樹型結構,然后再將各個文件從源路徑中拷貝出來,費時費力,還容易出錯。


3、系統(tǒng)兼容

該工具基于Python3開發(fā),在win10以及ubuntu 16.04 LTS測試均可使用,前提當然是系統(tǒng)要已經(jīng)安裝Pyhton3;由于使用了tkinter這個庫,所以在ubuntu下使用時,需要安裝python3-tk

sudo apt-get install python3-tk

4、功能擴展

如果file.list中的路徑表示的是一個文件夾,那么這個文件夾中的所有內(nèi)容都會被拷貝。例如,file.list的內(nèi)容如下

/media/sf_share/FileExt/1/2/3

此時被創(chuàng)建出來的文件樹型結構則是

1_20160830020434
└── 2
    └── 3
        ├── 4
        │   └── D.txt
        ├── A.txt
        ├── B.txt
        └── C.txt

如果想要拷貝出當前路徑中的所有名為“D.txt”的文件,那么file.list可以這么寫

**/D.txt

此時被創(chuàng)建出來的文件樹型結構如下

1_20160830020711
└── 2
    └── 3
        └── 4
            └── D.txt

5、工具使用

工具的使用非常簡單,進入命令行終端輸入以下命令,便會彈出對話框分別選擇源文件夾和file.list(任意文件名)

python3 FileExt.py

選擇文件夾


選擇文件夾

選擇file.list文件


選擇file.list文件

選擇完文件夾file.list文件之后,如果文件存在便會在console窗中輸出類似以下內(nèi)容

./2/3/A.txt --> /media/sf_share/FileExt/1_20160831003900/./2/3/A.txt
./8/H.txt --> /media/sf_share/FileExt/1_20160831003900/./8/H.txt
./I.txt --> /media/sf_share/FileExt/1_20160831003900/./I.txt
./5/6/G.txt --> /media/sf_share/FileExt/1_20160831003900/./5/6/G.txt

6、源碼下載

本工具的所有源碼已經(jīng)部署至github ,如果已經(jīng)安裝git,可以通過以下命令直接下載:

git clone https://github.com/qiuyi943/FileExt.git
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,697評論 19 139
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲de夢閱讀 100,830評論 9 468
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,351評論 25 708
  • 感覺我們干的活好低級
    芹菜姐閱讀 208評論 0 0
  • 在Windows系統(tǒng)下我們分區(qū)后每個分區(qū)都是一個獨立的文件系統(tǒng)。但是Linux不同,Linux文件系統(tǒng)是從根文件系...
    wangfs閱讀 214評論 0 0

友情鏈接更多精彩內(nèi)容