python文件操作技巧总结

发布时间:2020-02-10编辑:脚本学堂
本文介绍python文件操作的一些技巧,包括如何读写文件、遍历文件与文件夹、分割路径和文件名、文件复制与备份等。有需要的朋友,可以参考下。
         
总结:4个函数
    os.path.dirname(path)
    os.path.exists(path)
    shutil.copyfile(src, dst)
    shutil.copytree(srcDir, dstDir)

实战:文件备份小程序
   

复制代码 代码示例:
import os 
    import shutil 
    import datetime 
     
    '''''
    作用:将目录备份到其他路径。
    实际效果:
    假设给定目录"/media/data/programmer/project/python" ,
    备份路径"/home/diegoyun/backup/“ ,
    则会将python目录备份到备份路径下,形如:
    /home/diegoyun/backup/yyyymmddHHMMSS/python/xxx/yyy/zzz..
    
    用法:更改这两个参数.
    backdir:备份目的地.
    copydirs:想要备份的文件夹.
    '''
     
    def mainLogic(): 
        #add dirs you want to copy 
        backdir="d:test" 
        print(backdir) 
     
        copydirs=[] 
        copydirs.append("d:temp"); 
        #copydirs.append("d:test");         
     
        print("Copying files  ===================") 
        start=datetime.datetime.now() 
     
        #gen a data folder for backup 
        backdir=os.path.join(backdir,start.strftime("%Y-%m-%d")) 
        #print("backdir is:"+backdir)     
         
        kc=0 
        for d in copydirs: 
            kc=kc+copyFiles(d,backdir) 
     
        end=datetime.datetime.now() 
        print("Finished! ===================") 
        print("Total files : " + str(kc) ) 
        print("Elapsed time : " + str((end-start).seconds)+" seconds") 
     
    def copyFiles(copydir,backdir): 
        prefix=getPathPrefix(copydir) 
        #print("prefix is:"+prefix )    
     
        i=0 
        for dirpath,dirnames,filenames in os.walk(copydir): 
            for name in filenames: 
                oldpath=os.path.join(dirpath,name) 
                newpath=omitPrefix(dirpath,prefix) 
                print("backdir is:"+backdir )            
                newpath=os.path.join(backdir,newpath) 
                print("newpath is:"+newpath) 
     
                if os.path.exists(newpath)!=True: 
                    os.makedirs(newpath)   
                newpath=os.path.join(newpath,name) 
                print("From:"+oldpath+" to:"+newpath) 
                shutil.copyfile(oldpath,newpath) 
                i=i+1 
        return i     
     
    def getPathPrefix(fullpath): 
        #Giving /media/data/programmer/project/ , get the prefix 
        #/media/data/programmer/ 
        l=fullpath.split(os.path.sep) 
        #print(str(l[-1]=="")     
        if l[-1]=="": 
            tmp=l[-2] 
        else: 
            tmp=l[-1] 
        return fullpath[0:len(fullpath)-len(tmp)-1] 
     
    def omitPrefix(fullpath,prefix): 
        #Giving /media/data/programmer/project/python/tutotial/file/test.py , 
        #and prefix is Giving /media/data/programmer/project/, 
        #return path as python/tutotial/file/test.py 
        return fullpath[len(prefix)+1:] 
     
    mainLogic() 

您可能感兴趣的文章:
python 文件操作的二个例子
通过实例学习python文件操作
python目录与文件操作