1.遍历文件夹和文件
import os import os.path rootdir = "d:/test" for parent,dirnames,filenames in os.walk(rootdir): # case 1: for dirname in dirnames: print ( "parent is:" + parent) print ( " dirnames is:" + dirname) # case 2: for filename in filenames: print ( " parent is:" + parent) print ( " filename with full path:" + os.path.join(parent,filename))
2.复制文件
import shutil import os import os.path src = "d:\\test\\test1.txt" dst = "d:\\test\\test2.txt" dst2 = "d:/test/test.txt" dir1 = os.path.dirname(src) print ("dir1 %s" %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.copy(src,dst) shutil.copyfile(src,dst2) f2 = open(dst," r ") for line in f2: print(line) f2.close() #测试复制文件夹树 try: srcDir = "d:/test1" dstDir = "d:/test2" # 如果dstDir已经存在,那么shutil.copytree方法会报错 # 这也意味着你不能直接用d:作为目标路径 shutil.copytree(srcDir,dstDir) except Exception as err: print (err)
3.分割路径和文件名
import os.path #常用函数有三种:分隔路径,找出文件名,找出盘符(window系统),找出文件的扩展名。 spath = "d:/test/test.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)
函数总结
文件备份程序
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()