欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-04-19 12:41:10
python批量提取子文件夹下指定名称的文件最近使用数据集时遇到一个问题,需要把每个文件夹下第10张图片复制出来放到一个指定的文件夹里,手动复制太麻烦,所以找了点代码自己改了改。目录要提取每个子文件夹下名称后缀为_10.jpg的文件到一个新的文件夹中。代码import osimport reimport xlwt# 递归复制文件夹内的文件def copyFiles(sourceDir, targetDir): for file in os.listdir(sourceDir):...

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

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

目录

python批量提取子文件夹下指定名称的文件
要提取每个子文件夹下名称后缀为_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批量提取子文件夹下指定名称的文件
好了

本文地址:https://blog.csdn.net/qq_35498453/article/details/107156073