Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[Python]找出文件夹(及其子文件夹)中的文件并复制到目标文件夹中

[Python]找出文件夹(及其子文件夹)中的文件并复制到目标文件夹中

作者头像
祥知道
发布于 2020-03-10 09:03:07
发布于 2020-03-10 09:03:07
4K00
代码可运行
举报
文章被收录于专栏:祥的专栏祥的专栏
运行总次数:0
代码可运行

原创文章,欢迎转载。转载请注明:转载自 祥的博客

原文链接:https://cloud.tencent.com/developer/article/1596482


文章目录

代码语言:txt
AI代码解释
复制
- @[toc]1.问题引出源码及测试结果2.1. 程序源码2.2. 测试结果文本提示

找出文件夹(及其子文件夹)中的文件并复制到目标文件夹中

1.问题引出

下载了整个2018年和2019年上半年的经济学人,不过是根据发刊日期建立了多个文件夹,我想复制出里面所有的*.epub格式的电子书,不可能一个一个的复制吧,这样也太low了,遂有了这个想法。

而且为了便于按照名字排序,最后复制后的名字做了处理,只保留了文件名中的数字(经济学人发布的年份,因为不是一个人发布的名字多少不统一。The Economist 20190525.epubTEA20190302.epub或者TE_02_2_2019.epub

2. 源码及测试结果

2.1. 程序源码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# UTF-8
# 整理文件
# 将指定目录下的对应格式的文件(eg.epub)复制到指定的目录中
# ------------------------------------

import os
import shutil
#import copy

def list_folders_files(path):
    """
    返回 "文件夹""文件" 名字

    :param path: "文件夹""文件"所在的路径
    :return:  (list_folders, list_files)
            :list_folders: 文件夹
            :list_files: 文件
    """
    list_folders = []
    list_files = []
    for file in os.listdir(path):
        file_path = os.path.join(path, file)
        if os.path.isdir(file_path):
            list_folders.append(file)
        else:
            list_files.append(file)
    return (list_folders, list_files)

def list_files_with_suffix(path, suffix):
    """
    返回含有特定"后缀名""文件"名字
    :param path:        "文件"所在的路径
    :param suffix:      后缀名
    :return:            含有特定"后缀名""文件"名字
    """
    list_files = []
    for file in os.listdir(path):
        #print(file)
        file_path = os.path.join(path, file)
        if not os.path.isdir(file_path):
            if os.path.splitext(file)[1].lower() == suffix.lower():
                list_files.append(file)
    return list_files

def list_files_with_suffix_allPath(path, suffix):
    """
    返回含有特定"后缀名""文件"名字
    包括子目录
    :param path:        "文件"所在的路径
    :param suffix:      后缀名
    :return:            含有特定"后缀名""文件"名字
    """
    list_files = []
    for dirpath, dirs, files in os.walk(path):                # 递归遍历当前目录和所有子目录的文件和目录
        for name in files:                                   # files保存的是所有的文件名
            if os.path.splitext(name)[1].lower() == suffix.lower():
                filename = os.path.join(dirpath, name)       # 加上路径,dirpath是遍历时文件对应的路径
                list_files.append(filename)
    
    return list_files

def mkdir(path): 
	# 去除首位空格
    path=path.strip()
    # 去除尾部 \ 符号
    path=path.rstrip("\\") 
    # 判断路径是否存在
    # 存在     True
    # 不存在   False
    isExists = os.path.exists(path) 
    # 判断结果
    if not isExists:
        # 如果不存在则创建目录
        # 创建目录操作函数
        os.makedirs(path)
        # print('创建成功 > ',path)
        return True
    else:
        # 如果目录存在则不创建,并提示目录已存在
        # print('目录已经存在 > ',path)
        return False





def printMatrixList(li):
# 打印多维list
    row = len(li)
    col = len(li[0])
    
    for i in range(row):
        for j in range(col):
            print(li[i][j], end=' ')
        print('')




if __name__ == "__main__":
    dir_root = r"./TE2018"
    dir_root = r"./2019"
    
    
    # Step0. 寻找目录中所有的epub
    l_files = list_files_with_suffix_allPath(dir_root, '.epub')
    l_dir = []
    print('epub文件数: ', len(l_files))
    # print(l_files)
    
    dir_mk = r"./all_TE2018"
    dir_mk = r"./all_TE2019"
    mkdir( dir_mk )
    for file in l_files:
        (tmp_path, tmp_name) = os.path.split(file)
        # 删除里面除了数字外所有的东西
        tmp_name = filter(str.isdigit,  tmp_name )
        tmp_name = "".join(tmp_name) + ".epub"
        
        # 组合新文件路径
        newFilePath = os.path.join(dir_mk, tmp_name)
        # 复制
        shutil.copyfile(file, newFilePath)
        print('copy  ' + newFilePath)
    
    # 复制完成
    print('================')
    print('    copy ok    ')
    print('================')

2.2. 测试结果

文本提示

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
root@qfx:/srv/qfxFtp/HDD_sdb1/qfxSamba_share/Movies4/经济学人# ls
2019  all_TE2018  all_TE2019  find_Economist.py  TE2018  陈曲经济学人精讲
root@qfx:/srv/qfxFtp/HDD_sdb1/qfxSamba_share/Movies4/经济学人# python3 find_Economist.py 
epub文件数:  26
copy  ./all_TE2019/20190223.epub
copy  ./all_TE2019/20190209.epub
copy  ./all_TE2019/20190216.epub
copy  ./all_TE2019/0222019.epub
copy  ./all_TE2019/20190315.epub
copy  ./all_TE2019/20190302.epub
copy  ./all_TE2019/20190322.epub
copy  ./all_TE2019/20190308.epub
copy  ./all_TE2019/20190511.epub
copy  ./all_TE2019/20190518.epub
copy  ./all_TE2019/20190525.epub
copy  ./all_TE2019/20190601.epub
copy  ./all_TE2019/20190622.epub
copy  ./all_TE2019/20190629.epub
copy  ./all_TE2019/20190608.epub
copy  ./all_TE2019/20190713.epub
copy  ./all_TE2019/20190720.epub
copy  ./all_TE2019/20190727.epub
copy  ./all_TE2019/20190810.epub
copy  ./all_TE2019/20190817.epub
copy  ./all_TE2019/20190803.epub
copy  ./all_TE2019/20190330.epub
copy  ./all_TE2019/20190413.epub
copy  ./all_TE2019/20190427.epub
copy  ./all_TE2019/20190406.epub
copy  ./all_TE2019/20190504.epub
================
    copy ok    
================
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
[Python]将MP3和PDF按名字分类归档到各自文件夹
原文链接:https://blog.csdn.net/humanking7/article/details/84663012
祥知道
2020/03/10
9510
用 Python 批量把文件复制到另一个文件夹
大概是三个月前,有个人找我说要我帮忙写几行代码,功能是把一个文件夹里面的所有文件拆分成 200 个文件一个文件夹,很简单的。
伪君子
2019/08/21
3.3K0
python知识点100篇系列(5) -根据后缀名整理文件夹
平常用浏览器在互联网下载的文件,一般都在一个“下载”文件夹内,里面的文件什么格式的都有,看着就很乱;所以看能不能给整理一下,这个活python可以干;
JQ实验室
2024/09/18
1710
[Python]转换文件编码
原文链接:http://blog.csdn.net/humanking7/article/details/78501474
祥知道
2020/03/10
1.5K0
Python办公自动化案例实战
⽐如查找某个⽂件,在某个⽂件夹⾥,还包括从⽂件⽬录(也就是包括多个⽂件夹);查找指定
软件架构师Michael
2023/12/22
2771
Deepseek批量删除文件标题名的部分字符串
搜索本地电脑中这几个文件夹:"F:\图书";"F:\股票投资类图书";"F:\有声英文书";"D:\downloads"
AIGC部落
2025/02/06
2680
Deepseek批量删除文件标题名的部分字符串
python根据文件名分配文件夹
似水的流年
2023/10/16
2920
用Python实现批量高效文件处理 解放你的双手
有时候会有大量修改文件名的需求,比如修改文件后缀、文件名加前缀等,如果手动修改,效率极低,这时候可以使用Python来批量修改:
cutercorley
2020/07/23
6900
用Python实现批量高效文件处理 解放你的双手
一键自动整理文件!简单好用的 Python 脚本
我以前经常把下载的东西放在桌面或者 “下载” 文件夹中,使用后再也没管它,久而久之文件夹就变得乱七八糟,再整理的时候非常痛苦,巴不得有一个自动化的工具帮我归类文档
AirPython
2021/07/12
1.5K0
一键自动整理文件!简单好用的 Python 脚本
Python: 复制文件和文件夹
文章背景: 工作中,经常需要拷贝数据,比如将仪器数据拷贝到指定路径。Python中的shutil模块可以用于文件和文件夹的复制。此外,也可以借助win32file模块来复制文件。
Exploring
2022/09/20
4.5K0
Python中如何使用os模块和shutil模块处理文件和文件夹
os和shutil都是Python标准库中用于处理文件和文件夹的模块,它们都提供了许多常用的文件和文件夹操作功能,但是它们的使用场景和优势有所不同。
jackcode
2023/05/04
1.4K0
Python中如何使用os模块和shutil模块处理文件和文件夹
python根据已有文件名的文件复制文件到新文件夹中
最近需要对一些图片进行整理,需要从一堆图片中将已经存在在文件中的图片移动到另外一个新的文件夹中,所以就特意就写了一个小玩意方便使用.下面是代码实现:
小海怪的互联网
2019/10/14
4.1K0
Python-文件夹的拷贝操作
在Python中,想要实现文件夹的拷贝,需使用shutil包,其中文件复制的内置函数为shutil.copy
kirin
2021/04/28
3.3K0
Python办公自动化|自动整理文件,一键完成!
本文跟大家分享一个文件整理脚本的实现过程。具体的功能很简单,给定一个打算整理的文件夹目录,这个脚本可以将该目录下的所有文件都揪出来,并且根据后缀名归类到不同的文件夹里,就像下图一样,简直是整理爱好者的福音
刘早起
2020/07/06
6140
Python 查看目录中的文件
一些关于文件的操作 例如,实现查看目录内容的功能。类似Linux下的tree命令。 统计目录下指定后缀文件的行数。
AnRFDev
2021/02/01
3.7K0
PHP如何上传文件和下载,你学会了吗?
​ 在 B/S 程序中文件上传已经成为一个常用功能。其目的是客户可以通过浏览器(Browser)将文件上传到服务器(Server)上的指定目录。
叫我可儿呀
2019/12/04
1.8K0
如何使用Python选择性地删除文件夹中的文件?
问题描述:在一个文件夹中,有着普通文件以及文件夹,那么我们如何做到删除全部文件夹而不删除文件呢?
活用数据
2019/06/03
14.3K0
如何使用Python选择性地删除文件夹中的文件?
真香!Python十大文件骚操作!!
日常对于批量处理文件的需求非常多,用Python写脚本可以非常方便地实现,但在这过程中难免会和文件打交道,第一次做会有很多文件的操作无从下手,只能找度娘。
Sam Gor
2020/12/16
1K0
PHP - ZipArchive上传、下载实例
在很多实际生产场景都需要批量上传、下载一些文件的处理,整理了使用PHP语言操作ZipArchive实践和实例,ZipArchive需要服务器上安装zlib库,php扩展中安装zip扩展。
stark张宇
2024/03/27
5420
python笔记:文件以及文件夹操作考察
python内部有两类常见的针对文件以及文件夹进行操作的函数库,分别为os库以及shutil库。
codename_cys
2021/03/25
4480
推荐阅读
相关推荐
[Python]将MP3和PDF按名字分类归档到各自文件夹
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验