python 遍历文件夹、正则表达式字符串匹配、拷贝文件

1.遍历目录:
os.walk(dirpath)
返回三元组(root,dirs,files)
root 所指的是当前正在遍历的这个文件夹的本身的地址
dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录)
files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录)

如下文件夹结构

a ->   b   ->   1.txt,  2.txt
             c   ->   3.txt
             d   ->   
           4.txt
           5.txt
for (root, dirs, files) in os.walk('a'):
    #第一次运行时,当前遍历目录为 a
    所以 root == 'a'
         dirs == [ 'b', 'c', 'd']
         files == [ '4.txt', '5.txt']
    
    。。。

    # 接着遍历 dirs 中的每一个目录
    b:  root  = 'a\\b'
        dirs  = []
        files = [ '1.txt', '2.txt']
    
    # dirs为空,返回
    # 遍历c
    c:  root  = 'a\\c'
        dirs  = []
        files = [ '3.txt' ]
    
    PS : 如果想获取文件的全路径,只需要 
    for f in files:
        path = os.path.join(root,f)
    
    # 遍历d
    d:  root  = 'a\\b'
        dirs  = []
        files = []

    遍历完毕,退出循环

2.路径拼接:
os.path.join()

a_path='aaa'
b_path='bbb'
print(os.path.join(a_path,b_path))

输出aaa/bbb

3.正则表达式匹配字符串

str='.*.jpg'       #.*代替任意长度的字符串
match_obj=re.match(str,string)     #在string中查找str自字符串

4.拷贝文件shutil模块

shutil.copy(source,target) #将文件1的数据覆盖copy给文件2

例子:遍历文件夹中的所有图片移动到另一文件夹


import os
import re
import shutil

root = "/Users/hutingting/Desktop/name"
targetDir='/Users/hutingting/Desktop/result'

for dirpath, dirnames, filenames in os.walk(root):
    for filepath in filenames:
        image_name=os.path.join(dirpath, filepath)
        #print(image_name)
        str1='.*.jpg'
        match_obj = re.match(str1,image_name)
        if match_obj:
            print(image_name)
            shutil.copy(image_name,  targetDir)

你可能感兴趣的:(python学习笔记)