Python脚本:linux上将筛选的文件夹复制到另一个目录,保存目录结构以及文件和文件夹操作方法

import os,shutil

def newDir(dir_path):
    if not os.path.exists(dir_path):
        os.makedirs(dir_path)

def copydir(where_path,go_path,start_time,end_time):
    newDir(go_path)
    for brand in os.listdir(where_path):
        brand_path = os.path.join(where_path, brand)
        #print('brand_path',brand_path)
        for site in os.listdir(brand_path):
            site_path = os.path.join(brand_path,site)
            #print('site_path',site_path)
            for child in os.listdir(site_path):
                file_time = '-'.join(child.split('-')[2:5])
                go_dir = go_path + '/' + brand + '/' + site#动态生成子目录
                print(file_time[:10])
                if file_time[:10] >= start_time and file_time[:10] <= end_time:
                    child_path = os.path.join(site_path,child)

                    if not os.path.isdir(child_path):
                        #print('file',child_path)
                        newDir(go_dir)
                        shutil.copy(child_path,go_dir)
                    else:
                        #print('dir',child_path)
                        #复制文件夹能够自己生成目录
                        shutil.copytree(child_path,go_dir+'/'+child)

#删除文件名包含2018的文件和文件夹
def deldir(path):
    for child in os.listdir(path):
        child_path = os.path.join(path,child)
        if '2018' in child:
            if not os.path.isdir(child_path):
                os.unlink(child_path)
            else:
                shutil.rmtree(child_path)

if __name__ == "__main__":
    copydir('/lingtian/static_files/mkcms_dev/memo/memo_htmls','/lingtian/static_files/mkcms_dev','2018-09-01','2018-09-30')
    #deldir('/lingtian/static_files/mkcms_dev')                            

 我要复制的目录三层,所以有三层循环,保留了原来的目录结构

附上python相关文件操作,文件的复制和移动使用shutil包 ,删除使用os包

#文件、文件夹的移动、复制、删除、重命名 
#导入shutil模块和os模块
import shutil,os 
#复制单个文件 
shutil.copy("C:\\a\\1.txt","C:\\b") 
#复制并重命名新文件 
shutil.copy("C:\\a\\2.txt","C:\\b\\121.txt") 
#复制整个目录(备份) 
shutil.copytree("C:\\a","C:\\b\\new_a") 
#删除文件 
os.unlink("C:\\b\\1.txt") 
os.unlink("C:\\b\\121.txt") 
#删除空文件夹 
try: 
    os.rmdir("C:\\b\\new_a") 
except Exception as ex: 
    print("错误信息:"+str(ex))
#提示:错误信息,目录不是空的 
#删除文件夹及内容 
shutil.rmtree("C:\\b\\new_a") 
#移动文件
shutil.move("C:\\a\\1.txt","C:\\b") 
#移动文件夹 
shutil.move("C:\\a\\c","C:\\b") 
#重命名文件 shutil.move("C:\\a\\2.txt","C:\\a\\new2.txt") 
#重命名文件夹 
shutil.move("C:\\a\\d","C:\\a\\new_d") 

 

全部评论

相关推荐

来个厂收我吧:首先,市场侧求职我不是很懂。 但是,如果hr把这份简历给我,我会觉得求职人不适合做产品经理。 问题点: 1,简历的字体格式不统一,排版不尽如人意 2,重点不突出,建议参考star法则写个人经历 3,印尼官方货币名称为印度尼西亚卢比(IDR),且GMV690000印尼盾换算为305人民币,总成交额不高。 4,右上角的意向职位在发给其他公司时记得删除。 5,你所有的经历都是新媒体运营,但是你要投市场营销岗位,jd和简历不匹配,建议用AI+提示词,参照多个jd改一下经历内容。 修改建议: 1,统一字体(中文:思源黑体或微软雅黑,英文数字:time new romans),在word中通过表格进行排版(b站学) 2,校招个人经历权重:实习经历=创业经历(大创另算)>项目经历>实训经历>校园经历 3,请将项目经历时间顺序改为倒序,最新的放最上方。 4,求职方向不同,简历文字描述侧重点也需要不同。
点赞 评论 收藏
分享
自学java狠狠赚一...:骗你点star的,港卵公司,记得把star收回去
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务