久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Python 3 教程二:文件,目錄和路徑

 just_person 2009-07-10
 遍歷文件夾和文件

import  os
import  os.path
#  os,os.path里包含大多數(shù)文件訪問的函數(shù),所以要先引入它們.
#
 請按照你的實際情況修改這個路徑
rootdir  =   " d:/download "
for  parent, dirnames, filenames  in  os.walk(rootdir):
    
# case 1:
     for  dirname  in  dirnames:
        
print  ( " parent is: "   +  parent)
        
print  ( " dirname is: "   +  dirname)
    
# case 2
     for  filename  in  filenames:
        
print  ( " parent is: "   +  parent)
        
print  ( " filename with full path : "   +  os.path.join(parent, filename))

''' 知識點:

    * os.walk返回一個三元組.其中dirnames是所有文件夾名字(不包含路徑),filenames是所有文件的名字(不包含路徑).parent表示父目錄.
    * case1 演示了如何遍歷所有目錄.
    * case2 演示了如何遍歷所有文件.
    * os.path.join(dirname,filename) : 將形如"/a/b/c"和"d.java"變成/a/b/c/d.java".
'''

 

2 分割路徑和文件名

 

import  os.path
# 常用函數(shù)有三種:分隔路徑,找出文件名.找出盤符(windows系統(tǒng)),找出文件的擴展名.
#
根據(jù)你機器的實際情況修改下面參數(shù).
spath = " D:/download/repository.7z "

#  case 1:
p,f = os.path.split(spath);
print ( " dir is: " + p)
print ( " file is: " + f)

#  case 2:
drv,left = os.path.splitdrive(spath);
print ( " driver is: " + drv)
print ( " left is: " + left)
#  case 3:
f,ext = os.path.splitext(spath);
print ( " f is: " + f)
print ( " ext is: " + ext)
'''
    知識點:    這三個函數(shù)都返回二元組.
    * case1 分隔目錄和文件名
    * case2 分隔盤符和文件名
    * case3 分隔文件和擴展名
'''


總結(jié):5個函數(shù)
  • os.walk(spath)
  • os.path.split(spath)
  • os.path.splitdrive(spath)
  • os.path.splitext(spath)
  • os.path.join(path1,path2)

3 復(fù)制文件


import  shutil
import  os
import  os.path

src
= " d:\\download\\test\\myfile1.txt "
dst
= " d:\\download\\test\\myfile2.txt "
dst2
= " d:/download/test/測試文件夾.txt "

dir1
= os.path.dirname(src)

print ( " dir1 %s " % dir1)

if (os.path.exists(src) == False):
    os.makedirs(dir1)       

f1
= open(src, " w " )
f1.write(
" line a\n " )
f1.write(
" line b\n " )
f1.close()


shutil.copyfile(src, dst)
shutil.copyfile(src, dst2)
f2
= open(dst, " r " )
for  line  in  f2:
    
print (line)

f2.close()

# 測試復(fù)制文件夾樹
try :
    srcDir
= " d:/download/test "
    dstDir
= " d:/download/test2 "
    
# 如果dstDir已經(jīng)存在,那么shutil.copytree方法會報錯!
     # 這也意味著你不能直接用d:作為目標(biāo)路徑.
    shutil.copytree(srcDir, dstDir)
except  Exception as err:
    
print  (err)
    
'''
    知識點:
    * shutil.copyfile:如何復(fù)制文件
    * os.path.exists:如何判斷文件夾是否存在
    * shutil.copytree:如何復(fù)制目錄樹    
'''

總結(jié):4個函數(shù)
  • os.path.dirname(path)
  • os.path.exists(path)
  • shutil.copyfile(src, dst)
  • shutil.copytree(srcDir, dstDir)

 

4 實戰(zhàn):文件備份小程序


import  os
import  shutil
import  datetime

'''
作用:將目錄備份到其他路徑,。
實際效果:
假設(shè)給定目錄"/media/data/programmer/project/python" ,
備份路徑"/home/diegoyun/backup/“ ,,
則會將python目錄備份到備份路徑下,,形如:
/home/diegoyun/backup/yyyymmddHHMMSS/python/xxx/yyy/zzz..

用法:更改這兩個參數(shù).
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()

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多