python3筆記之複製目錄結構

文件管理時,複製、粘貼是最經常使用的操做,但複製時通常是文件和文件夾是一塊兒複製的。
偶爾但願複製一個完整的目錄結構,可是不須要複製任何文件。
之前一直沒有找到相應軟件,今天就利用剛學的python本身DIY一個。
#!/path/env python3
#coding:utf-8
'''
複製目錄結構

Version: 1.0 builde 2013.03.06r1
Author: lioncn.blog.51cto.com
'''
import os
import sys

print("\nCopy directory structure")
if len(sys.argv)==1: #沒有命令行,提示輸入
        print()
        sourceRoot=input('\tFrom directory: ') #來源目錄
        destRoot=input('\tTo directory: ') ##目標目錄
#        sourceRoot='c:\\fpc2.6'
#        destRoot='f:\\test'
else: #支持命令行
        sourceRoot=argv[1]
        destRoot=argv[2]
        print("\tFrom directory: '",sourceRoot,"'")
        print("\tTo directory: '",destRoot,"'.")

#覈查來源/目標目錄是否存在
if not os.path.isdir(sourceRoot):
        print('Not found source directory:',sourceRoot)
        exit()
if not os.path.isdir(destRoot):
        print('Not found dest directory:',destRoot)
        exit()

#複製目錄結構
for dirname,dirs,files in os.walk(sourceRoot):
##        print(dirname,':')
##        print(dirs)
        dirTemp=dirname.replace(sourceRoot,destRoot)
        if len(dirs)!=0: # 非空目錄
                print(dirTemp)
                os.chdir(dirTemp)
                for s in dirs:
                        os.makedirs(s,0o777,True) #True屏蔽目錄已經存在錯誤提示
                        print('\t',s) #正在創建的子目錄
                print('-'*50)
        
os.chdir(destRoot) #環境清理
 
測試時,複製安裝的freepascal 2.6目錄的目錄結構:
源目錄結構以下圖,其中一些目錄已經使用「...」省略。

程序運行結果以下:
>>>

Copy directory structure

  From directory: c:\fpc2.6
  To directory: f:\test
--------------------------------------------------
f:\test
    bin
    demo
    doc
    examples
    msg
    units
--------------------------------------------------
f:\test\bin
    i386-win32
--------------------------------------------------
f:\test\demo
    freebsd
    graph
    linux
    lister
    macos
    modex
    morphos
    netware
    netwlibc
    os2
    palmos
    symbian
    text
    unix
    win32
    wince
--------------------------------------------------
f:\test\demo\symbian
    qhelloworld
    QPasHello
--------------------------------------------------
f:\test\demo\wince
    SysInfo
    testemu
--------------------------------------------------
f:\test\doc
    fpc
    ide
--------------------------------------------------
f:\test\examples
    cdrom
    fcl-db
    fcl-p_w_picpath
    fv
    gdbint
    gmp
    gtk1
    gtk2
    hash
    httpd22
    ibase
    libgd
    libsee
    libxml2
    mysql
    odbc
    openal
    opengl
    oracle
    paszlib
    postgres
    ptc
    pxlib
    regexpr
--------------------------------------------------
f:\test\examples\gtk1
    tutorial
--------------------------------------------------
f:\test\examples\gtk2
    filechooser
    gettingstarted
    gtkglext
    gtk_demo
    helloworld
    helloworld2
    plugins
    scribble_simple
--------------------------------------------------
f:\test\examples\gtk2\gtk_demo
    data
--------------------------------------------------
f:\test\units
    i386-win32
--------------------------------------------------
f:\test\units\i386-win32
    a52
    bzip2
    cairo
    cdrom
    chm
    fastcgi
    fcl-base
    fcl-db
    fcl-extra
    fcl-fpcunit
    fcl-p_w_picpath
    fcl-js
    fcl-json
    fcl-net
    fcl-pa***c
    fcl-process
    fcl-registry
    fcl-res
    fcl-web
    fcl-xml
    fftw
    fpgtk
    fpmkunit
    fppkg
    fv
    gdbint
    gmp
    graph
    gtk1
    gtk2
    hash
    hermes
    httpd22
    ibase
    p_w_picpathmagick
    lexyacc
    libgd
    libpng
    libsee
    libxml2
    lua
    mad
    mysql
    numlib
    nvapi
    odbc
    oggvorbis
    openal
    opencl
    opengl
    openssl
    oracle
    pasjpeg
    paszlib
    pcap
    postgres
    ptc
    pxlib
    regexpr
    rsvg
    rtl
    sdl
    sqlite
    symbolic
    tcl
    unzip
    winceunits
    winunits-base
    winunits-jedi
    zlib
    zorba
--------------------------------------------------
>>>

覈對了下,源目錄下135個子目錄都複製到目標文件夾,沒有複製任何的文件。

目標目錄
源目錄
經鑑定,該程序圓滿完成了領導和黨,還有最不重要的人民,交給的任務:複製了源目錄的135個子目錄,並構建了完整的目錄結構。
相關文章
相關標籤/搜索