代码背景:

    最近老看视频教程,我需要知道一部教程,需要多久能看完。win下文件夹里,多选视频文件,可以直接在属性中查看一共需要的时间。不过在网上下载的很多视频教程每一章都分布在不同的文件夹下,无法快捷查看所有视频文件的时间。要是把这些视频文件,全部放到一个目录下,就好了。于是写了下面的代码:

import re
import os
import time
import shutil
import datetime

def copyFileToOne(pathFrom,pathTo):
    '''
    递归遍历pathFrom目录,将里面所有的文件,拷贝到pathTo目录下
    :param pathFrom:
    :param pathTo:
    :return:
    '''
    print('进入目录' + pathFrom)
    #假如不存在,创建目标文件夹
    if not os.path.exists(pathTo):
        os.mkdir(pathTo)

    # 当此为文件目录时:
    if os.path.isdir(pathFrom):
        filelist = os.listdir(pathFrom)
        for item in filelist:
            item = pathFrom+os.path.sep+item
            if item == pathTo:
                continue
            elif os.path.isdir(item):
                copyFileToOne(item, pathTo)
            else:
                print('复制文件:' + item)
                print('复制开始...............#begin')
                begintime = datetime.datetime.now()

                shutil.copy(item,pathTo)

                endtime = datetime.datetime.now()
                copytime = (endtime-begintime).seconds
                print('复制结束...............#end')
                print('复制用时(秒)...............#%d' % (copytime,))
                print('...................................')


if __name__=='__main__':
    copyFileToOne(os.getcwd(),'O:\\test\\all')

注意点:
    所有的路径,全部使用绝对路径

python中对文件、文件夹的操作需要涉及到os模块和shutil模块。

创建文件:

1) os.mknod("test.txt") 创建空文件
 2) open("test.txt",w)           直接打开一个文件,如果文件不存在则创建文件


创建目录:

os.mkdir("file")                   创建目录

 创建多层新目录:

### 创建多层目录
def mkdirs(path): 
    # 去除首位空格
    path=path.strip()
    # 去除尾部 \ 符号
    path=path.rstrip("\\")
 
    # 判断路径是否存在
    # 存在     True
    # 不存在   False
    isExists=os.path.exists(path)
 
    # 判断结果
    if not isExists:
        # 创建目录操作函数
        os.makedirs(path)
        # 如果不存在则创建目录
        print path + u' 创建成功'
        return True
    else:
        # 如果目录存在则不创建,并提示目录已存在
        print path + u' 目录已存在'
        return False
 复制文件:
 shutil.copyfile("oldfile","newfile")       oldfile和newfile都只能是文件
 shutil.copy("oldfile","newfile")            oldfile只能是文件夹,newfile可以是文件,也可以是目标目录

 复制文件夹:
 shutil.copytree("olddir","newdir")        olddir和newdir都只能是目录,且newdir必须不存在

 重命名文件(目录)
 os.rename("oldname","newname")       文件或目录都是使用这条命令

 移动文件(目录)
 shutil.move("oldpos","newpos")    

 删除文件
 os.remove("file")

 删除目录
 os.rmdir("dir") 只能删除空目录
 shutil.rmtree("dir")    空目录、有内容的目录都可以删 

 转换目录
 os.chdir("path")    换路径

 判断目标
 os.path.exists("goal")    判断目标是否存在
 os.path.isdir("goal")     判断目标是否目录
 os.path.isfile("goal")    判断目标是否文件  备注:若路径中含中文,在windows环境(编码为GBK)下,要将目录编码成GBK,如:dir.encode('GBK')