【复制同名文件】使用Python复制多个文件夹的同名文件到一个文件夹

场景1:爬虫得到的数据出现多个文件名相同,需要统一再次重命名。复制多个文件夹的同名文件到一个文件夹

#编码类型
#-*- coding: UTF-8 -*-
#导入包
import os 
import shutil

srcpath='./download_images/'
targetpath='./download_images_re/'

#累加,用于命名
i=1
#返回指定路径下的文件和目录信息
pathDir =  os.listdir(srcpath)

#遍历
for allDir in pathDir:


    for j in os.listdir(os.path.join(srcpath, allDir)):

        #路径拼接
        imgPath = os.path.join(srcpath,allDir,j)

        newtargetpath=targetpath+str(i).zfill(6)+'.jpeg'#zfill()向右对齐,用0补齐
        #复制文件
        shutil.copyfile(imgPath,newtargetpath)
        #打印被复制的文件
        print(imgPath)
        i+=1

场景2:用bash命令将多级目录下的文件打标签,生成列表文件

例如:

A-

    A1

            A1-1    1;2;3;4;5.jpg

            A1-2

    A2

    A3

B-

    B1

使用下列代码:

find ./ -name "*.*g"|awk -F '/' '{print $0"\t"$(NF-2)}' > own.txt

他最终会生成一个结果文档:左侧对应各个文件的绝对路径 右侧是你想打标签对应的名称(NF-2  指的是完整路径的倒数第二个文件夹名称 即A1)

A/A1/A1-1/1.jpg A1

A/A1/A1-1/2.jpg A1

A/A1/A1-1/3.jpg A1

.......

 

场景3:从excel文件或者txt文件中获取链接,进而下载

#3-1读取文件,文件形式是每行对应文件下载链接

import os
import urllib.request

file_addr = "./online_data.list"


# xlsx文件存在
if os.path.exists(file_addr):    # 读取内容
    data_file=open("online_data.list","r+").read().splitlines()
    save_path="online_data"
    if not os.path.exists(save_path):   #日期
        os.mkdir(save_path)
    for j in data_file:
        if j.endswith('.jpg') or j.endswith('.png'):
            print(j)
            # print('./'+save_path + j.split('/')[-1])
            try:
            	urllib.request.urlretrieve(j, './'+save_path +'/'+ j.split('/')[-1])  
            except:
                continue 


############################################################################

#3-2 读取excel 文件 。第21列为图片链接

import xlrd
import os
import urllib.request

file_addr = "./111111111.xls"


# xlsx文件存在
if os.path.exists(file_addr):    # 读取内容
    xls_file = xlrd.open_workbook(file_addr)    # 取第一个sheet页
    xls_sheet = xls_file.sheets()[0]    # 第一个sheet页的行数和列数
    nrows = int(xls_sheet.nrows)
    ncols = int(xls_sheet.ncols)    # 读取每一行,一般不读第一行,因为是表头    
    # for now in range(1,nows):        #拿到每行的数据,结构是列表,通过索引取每一个字段内容        
    

    rows_value = xls_sheet.col_values(21)    #第21列  图片链接
    # save_path=os.path.join(rows_value[3].split('/')[-1])   
    save_path="珍爱网"
    if not os.path.exists(save_path):   #日期
        os.mkdir(save_path)
    for j in rows_value:
        if j.endswith('.jpg') or j.endswith('.png'):
            print(j)
            # print('./'+save_path + j.split('/')[-1])
            urllib.request.urlretrieve(j, './'+save_path +'/'+ j.split('/')[-1])  

############################################################################

3-3 读取csv文件

import xlrd
import os
import urllib.request
import csv
import pandas as pd


file_addr = "./头像正样本.csv"


# csv文件存在
if os.path.exists(file_addr):    # 读取内容
    xls_file = pd.read_csv('头像误推.csv', usecols=['图片链接']).values.tolist() #使用图片链接这一列的数据
      
    save_path="正样本"
    if not os.path.exists(save_path):   #日期
        os.mkdir(save_path)
    for i,j in enumerate(xls_file):  #读取数据,遍历
        if j[0].endswith('.jpg') or j[0].endswith('.png') or j[0].endswith('=='):
            j=j[0].strip()   #删掉多余的 \t \n 
            print(j)
            # print('./'+save_path + j.split('/')[-1])
            urllib.request.urlretrieve(j, './'+save_path +'/'+ j.split('/')[-1])
        else:
            continue

 

 

场景4:使用opencv对人脸进行美白,同时保存md5名称的图像文件

代码参考:https://blog.csdn.net/hongchengling2/article/details/107574175

import numpy as np
import cv2
import os
import matplotlib.pyplot as plt

import hashlib   
m2 = hashlib.md5()   

def t2s(img):
    return cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
  
#Dest =(Src * (100 - Opacity) + (Src + 2 * GuassBlur(EPFFilter(Src) - Src + 128) - 256) * Opacity) /100 ;
def filter_gaussian(img, v1, v2):
    dst = np.zeros_like(img)
    dx = v1*5
    fc = v1*12.5
    p = 0.1

    #双边滤波
    temp1 = cv2.bilateralFilter(img,dx,fc,fc)
    #图像矩阵相减,得到人脸轮廓
    temp2 = cv2.subtract(temp1,img)
    temp2 = cv2.add(temp2,(10,10,10,128))
    #高斯模糊
    temp3 = cv2.GaussianBlur(temp2,(2*v2-1,2*v2-1),0)
    #原图叠加
    temp4 = cv2.add(img,temp3)
    #按权重混合
    dst1 = cv2.addWeighted(img,p,temp4,1-p,0.0)
    dst = cv2.add(dst1,(10,10,10,255))
    # plt.figure(figsize=(20,20))
    # plt.imshow(t2s(cv2.hconcat([img,dst])))
#     plt.imshow(t2s(cv2.hconcat([img,temp1,temp2,temp3,temp4,dst1,dst])))
    # plt.show()
    return dst

save_path="white_face"
if not os.path.exists(save_path):   #日期
    os.mkdir(save_path)

original_path ="originaldata_818"
for img in os.listdir(original_path):
    print(img)
    temppath=os.path.join(original_path,img)
    img = cv2.imread(temppath)
    m2.update(img)   
    dst = filter_gaussian(img,7,4)
    cv2.imwrite("./"+save_path+"/"+m2.hexdigest()+".jpg",dst)

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页