python批量提取子文件夹下指定名称的文件

python批量提取子文件夹下指定名称的文件

最近使用数据集时遇到一个问题,需要把每个文件夹下第10张图片复制出来放到一个指定的文件夹里,手动复制太麻烦,所以找了点代码自己改了改。

目录

python批量提取子文件夹下指定名称的文件_第1张图片
要提取每个子文件夹下名称后缀为_10.jpg的文件到一个新的文件夹中。

代码

import os
import re
import xlwt

# 递归复制文件夹内的文件
def copyFiles(sourceDir, targetDir):
    for file in os.listdir(sourceDir):
        sourceDir1 = os.path.join(sourceDir, file)  # 路径名拼接
        targetDir1 = os.path.join(targetDir)
        for file in os.listdir(sourceDir1):
            sourceDir2 = os.path.join(sourceDir1, file)
            # 忽略某些特定的子文件夹
            if sourceDir2.find("视点") > 0:
                # 列出源目录文件和文件夹
                for file in os.listdir(sourceDir2):
                    # 拼接完整路径
                    if re.search('_10.jpg', file):
                        sourceFile = os.path.join(sourceDir2, file)
                        targetFile = os.path.join(targetDir1, file)

                        if os.path.isfile(sourceFile):
                            if not os.path.exists(targetDir1):
                                os.makedirs(targetDir1)
                            if not os.path.exists(targetFile) or (os.path.exists(targetFile) and (
                                    os.path.getsize(targetFile) != os.path.getsize(sourceFile))):
                                open(targetFile, "wb").write(open(sourceFile, "rb").read())
copyFiles("C:\\Users\\yaotong\\Desktop\\OFD_full_DB_labelled\\pic", "copy")

os.listdir()列出目录路径

语法:os.listdir(path),path:需要列出的目录路径
用法:

import os, sys

# 打开文件
path = "/pic"
dirs = os.listdir( path )

# 输出所有文件和文件夹
for file in dirs:
   print file

os.path.join() 路径拼接函数

语法:os.path.join(path1,path2,path3,…)
用法:

path1 = pic
path2 = 0001
path = os.path.join(path1,path2)
print(path)

结果:pic\0001

find()函数

语法:string.find(‘str’)返回从string扫描到str的起始位置,未找到返回-1
用法:

string = 'hello,world'
print(string.find('ello'))

结果: (1,4)

re.rearch()扫描字符串

语法:re.search(pattern, string)
pattern:要找到的字符串
string:要扫描的字符串
用法:

import re
if re.rearch('he','helloworld')
	print(true)
	
结果:true

其他方法

os.path.isfile()判断该路径是否是文件
os.path.exists()判断是否存在,存在返回True,否则False
os.makedirs()创建路径

copyFiles共有两个参数:
sourceDir:需要遍历的文件夹路径
targetDir:遍历后保存查找到文件的路径

结果

新建文本文档,命名为test.py,粘贴代码。shift加鼠标右键→在此处打开命令窗口,输入python test.py回车。
python批量提取子文件夹下指定名称的文件_第2张图片
好了

你可能感兴趣的:(python批量提取子文件夹下指定名称的文件)