把test文件夹(包括子文件)里的.txt文件,全部复制到new文件夹下

test文件夹(包括子文件)里的.txt文件,全部复制到new文件夹下

目录

把test文件夹(包括子文件)里的.txt文件,全部复制到new文件夹下

思路:

相关知识:

参考代码:

运行结果:

复制之前:

复制之后:


思路:

1. 递归搜索某个文件夹下所有的txt文件

1.1  os模块下的listdir()函数得到该路径下的所有文件

1.2 for循环遍历每一个文件

1.2.1 os.path模块下的join()方法得到一个完整的路径new_path

1.2.2 os.path模块下的isdir()方法判断它是否是文件夹

1.2.2.1 如果它是一个文件夹的情况下

1.2.2.1.1 递归访问这个路径

1.2.2.2 如果它不是一个文件夹的情况下

1.2.2.2.1  再次用endswith()判断它是否是txt文件

1.2.2.2.2 如果是txt文件的话,用append()方法追加在这个完整的路径里

1.3 如果是txt文件的话,就保存在一个列表里

1.4 调用原文件test所在的路径

2. 将所有的文本文件复制到目标文件夹下

2.1  split()方法进行分隔

2.2 os.path模块下的join()方法对目标文件进行合并

2.3 先对这个文件进行读取,把读取的内容写到另一个文件里去

2.3.1 用上下文管理语句with读写文件

2.3.1.1 对原文件进行读取

2.3.1.1.1 把读取到的文件放到temp里面

2.4.1.2 对目标文件进行写入

2.4.1.2.1 temp进行写入

3. 用for循环遍历所有符合条件的txt文件

3.1 调用copy()方法进行复制

为了知道是否复制成功,可以加入一个语句来提醒

相关知识

1. 如果想要复制某个文件夹下的全部文件,而又不清楚文件的具体数目,可以采用listdir()

方法列出该文件下所有文件的名称

Listdir()列出当前目录下的所有文件  (书144页)

2. Os.path模块下的join()方法,将多个路径组合后返回  (书146页)

3. Os.path模块下的split()方法,以路径中的最后一个斜线为分隔符,把路径分割成两部

分,以元组的形式返回  (书146页)

4. Os.path模块下的isdir()方法,判断路径(new_path)是否为文件夹  (书146页)

Os.path模块下的isfile()方法,判断路径(new_path)是否为文件 (书146页)

5. 函数endswith()判断字符串是否以指定的后缀(字符串)结尾,常用于判断文件类型。如果检测到字符串,则返回True,否则返回False(注:会认为空字符为真)相关链接

相关函数: startswith()   如果字符串以指定的前缀(字符串)开头,则startswith()方法将返回True。如果不是,则返回Falseppt第七章 7.4.7

6. Append()方法用于向列表尾部追加元素  (书32页)

7. Python内置函数open()可以指定模式打开指定文件并创建文件对象  (书133页)

内置函数open()的主要参数:(1)参数file指定要打开或创建的文件名称;(2)参数mode指定打开文件后的处理方式(’r’ :读模式(默认模式,可忽略),如果文件不存在则抛出异常;

‘w’:写模式,如果文件已存在,先清空原有内容;如果文件不存在,则创建文件)

8. 使用上下文管理语句with避免忘记关闭文件;使用read()方法从文件中读取内容;使用

文件对象的write()方法写入内容 (书134页)

9. 为了避免对字符串中的转义字符进行转义,可以使用原始字符串。原始字符串是指,在

字符串前面加上字母r或者R表示原始字符串,其中所有的字符都表示原始的含义而不会进行任何的转义。也可以用两个斜线表示一个斜线的意思  (书108页)

参考代码:

from os import listdir
from os.path import join,isdir,split
def travel(path):
    file_list = listdir(path)
    for file in file_list:
        new_path = join(path,file)
        if isdir(new_path):
            travel(new_path)
        else:
            if new_path.endswith('txt'):
                files.append(new_path)
def copy(src,dst):
    file_name = split(src)[-1]
    new_file = join(dst,file_name)
    with open(src,'r') as fp:
        temp = fp.read()
    with open(new_file,'w') as fp:
        fp.write(temp)

files = []
travel(r'D:\aaa\test')
for f in files:
    copy(f,'D:\\aaa\\new')
print('OK!')

运行结果:

为了方便我看,我就把test文件和new文件放在aaa文件夹里了,如下所示:

复制之前:

  1. 先看test文件,如下所示:

2. 再看new文件下,里面什么也没有,如下所示:

复制之后:

如下所示,首先它会提示我,我已经复制完成了:

1.先看test文件,没啥变化,如下所示:

2.再看new文件下,test文件夹(包括子文件)里的.txt文件已经全部复制到new文件里了

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值