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个子目录,并构建了完整的目录结构。
相关文章
相关标签/搜索