当前位置: 首页 > news >正文

合并文件夹中所有文件,并输出重复的条形码值

文章目录

        • 一、需求
        • 二、处理方式
        • 三、代码实现

一、需求

每天会生成一个记录文件(文件名按日期yyyyMMdd格式命名),记录文件中记录有条形码的内容,需要合并最近20次的数据,并提取出有重复的条形码。
也可以进行最近30天数据的合并,需要修改次数判断为日期判断即可。

二、处理方式

1、遍历存放记录文件的文件夹,并将获取的文件名进行排序;
2、根据条件过滤不需要的文件,然后将所有读取的文件使用pandas 的concat函数进行合并;
3、使用duplicated函数判断是否有重复;
4、输出有重复的条形码值。

三、代码实现

import datetime
import os
import shutil
import pandas as pdcurrent_date = datetime.date.today()
ls = []files = os.listdir("记录文件")
files = sorted(files, reverse=True)  # 对文件进行逆序排序count = 0
for file in files:if '模板' not in file and file.endswith('.xlsx'):  # 只选择xlsx后缀的文件,并剔除文件名中有"模板"的文件file_path = os.path.join("记录文件", file)df = pd.read_excel(file_path)ls.append(df)count += 1if count == 20:  # 选择最近的20个文件breakoutput = pd.concat(ls)
oupt_name = f'{datetime.date.today()}合并的数据.csv'
output.to_csv(oupt_name, encoding='gbk')data = pd.read_csv(oupt_name, encoding='gbk')
data['是否重复'] = data['条码值'].duplicated(keep=False)
duplicate_barcodes = data[data['是否重复'] == True]if len(duplicate_barcodes['是否重复'].tolist()) != 0:duplicate_barcodes.to_csv('有重码的文件.csv', encoding='gbk')if not os.path.exists("合并后的文件"):os.makedirs("合并后的文件")
if not os.path.exists("有重码的文件"):os.makedirs("有重码的文件")
shutil.move(oupt_name, os.path.join("合并后的文件", oupt_name))
shutil.move('有重码的文件.csv', os.path.join("有重码的文件", '有重码的文件.csv'))

如果是最近30天的文件,合并文件的代码如下,判断是否重复的代码不变:

current_date = datetime.date.today() - datetime.timedelta(days=30)
date_string = current_date.strftime("%Y%m%d")
print("当前日期:", date_string)ls = []
for file in os.scandir():if '模板' not in file.name:if file.name.endswith('xlsx'):file_date = datetime.datetime.strptime(file.name[:-5], "%Y%m%d").date()if file_date > current_date:df = pd.read_excel(file.name)ls.append(df)
output = pd.concat(ls)
http://www.lryc.cn/news/94438.html

相关文章:

  • P3089 [USACO13NOV] Pogo-Cow S 弹簧踩高跷
  • 计算机网络 - 第一章(下)
  • 【Uniapp】小程序携带Token请求接口+无感知登录方案2.0
  • Ubuntu常用命令
  • ERP重构-SLA子分类账-分布式实现方案
  • IP路由协议(RIP、IGRP、OSPF、IS-IS、BGP)
  • 互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景
  • Python WSGI 与 Web 开发框架
  • [洛谷]P6464 [传智杯 #2 决赛] 传送门
  • Http协议和RestTemplate协议有什么区别?
  • 基于SpringBoot+微信小程序的医院预约叫号小程序
  • springboot整合RabbitMQ 消费端处理数据
  • 计算机中CPU、内存、缓存的关系
  • 【Linux实验】构造一个简单的 shell
  • 【电路原理学习笔记】第2章:电压、电流和电阻:2.6 电路
  • 基于深度学习的人脸检测技术
  • 【linux kernel】一文总结linux内核通知链
  • kafka入门,Kafka 副本(十三)
  • 利用PPT制作简单的矢量图
  • 18-Linux 常用命令
  • 2024考研408-计算机组成原理第六章-总线学习笔记
  • uni_app 微信小程序 苹果手机 边框显示不全
  • vue 访问第三方 跨域, 配置vue.config.js
  • 使用gradio库的File模块实现文件上传和展示
  • 网络安全进阶学习第四课——SSRF服务器请求伪造
  • js处理扁平数组和树结构相互转换
  • Spark弹性分布式数据集
  • ffmpeg学习记录
  • ChatGPT:为教育创新提供五大机遇
  • Educational Codeforces Round 151 (Rated for Div. 2)