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)