文件分拣小工具

文章讲述了如何使用Python脚本遍历文件夹,检测.xlsx文件,读取数据并合并,以及使用Linux命令进行文件移动和合并的方法,以实现对xlsx文件中的数据进行统计并保存到单个文件中。
摘要由CSDN通过智能技术生成

  此工具来源来自于一道比赛题目,题目描述大致如下:

现在有一个文件夹下面包含若干子文件夹,某个子文件夹下面可能有一个xlsx文件,要求把所有xlsx中的数据进行统计,得到的数据行数为答案

文件深度大概如下

可见还是相当麻烦,还是比较多

Python脚本

import os
import shutil

# 指定源目录和目标目录
src_dir = 'file'
dst_dir = 'out'

# 确保目标目录存在,如果不存在则创建
if not os.path.exists(dst_dir):
    os.makedirs(dst_dir)

# 遍历源目录及其所有子目录
for root, dirs, files in os.walk(src_dir):
    for file in files:
        # 判断文件是否为xlsx格式
        if file.endswith('.xlsx'):
            # 构建完整源文件路径和目标文件路径
            src_file = os.path.join(root, file)
            dst_file = os.path.join(dst_dir, file)

            # 复制文件到目标目录
            shutil.copy2(src_file, dst_file)

print("所有xlsx文件已成功复制到out目录下。")

分拣加合并代码

import os
import shutil
from pathlib import Path
import pandas as pd

# 指定源目录和目标目录
src_dir = 'file'
dst_dir = 'out'

# 确保目标目录存在,如果不存在则创建
if not os.path.exists(dst_dir):
    os.makedirs(dst_dir)

# 用于存储所有.xlsx文件的数据帧
all_xlsx_data = []

# 遍历源目录及其所有子目录
for root, dirs, files in os.walk(src_dir):
    for file in files:
        # 构建完整源文件路径和目标文件路径
        src_file = os.path.join(root, file)
        dst_file = os.path.join(dst_dir, file)

        # 复制文件到目标目录
        shutil.copy2(src_file, dst_file)
        print(f"{file} 已成功复制到 {dst_dir} 目录下。")

        # 判断文件是否为.xlsx格式
        if file.endswith('.xlsx'):
            # 读取 Excel 文件并存储到列表中
            df = pd.read_excel(src_file)
            all_xlsx_data.append(df)

# 将所有.xlsx文件合并为一个数据帧
merged_df = pd.concat(all_xlsx_data, ignore_index=True)

# 将合并后的数据帧写入到out.xlsx文件中
output_file = os.path.join(dst_dir, 'out.xlsx')
merged_df.to_excel(output_file, index=False)
print(f"所有.xlsx文件已成功合并到 {output_file} 文件中。")

当然也可以使用linux一条命令进行

find  -type f -name "*.xlsx" -exec mv {} out \;\n

合并可以使用wps进行合并

也可以达到效果,无论采用那种方式都可以达到相同的效果,只要目的达到了就行了,大佬勿喷!!题目文件资源已经绑定,各位大佬可以试一下~

  • 13
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
{ if (!div_flag && !mul_flag && !minus_flag && !plus_flag && !sin_flag && !cos_flag && !tan好的,我可以给你提供一个简单的分拣工具的示例代码,你可以根据自己的_flag && !cot_flag && !or_flag && !and_flag && !xor_flag && !not_flag && !sqrt_flag && !square_flag需求进行修改: ```python import os import shutil # 定义文件类型和对应的目录 file_types = && !reciprocal_flag && !factorial_flag && !log_flag && !ln_flag) { int n = Integer.parseInt(str { 'jpg': '图片', 'png': '图片', 'doc': '文档', 'docx': '); if (n < 0) { str = "负数没有阶乘"; clear_flag = true; }文档', 'xls': '表格', 'xlsx': '表格', 'pdf': 'PDF文件', ' else { long result = 1; for (int i = 1; i <= n; i++) { result *=zip': '压缩文件', 'rar': '压缩文件', } # 定义要分拣文件夹路径 source i; } str = result + ""; factorial_flag = true; clear_flag = false; } } } _folder = '/path/to/source/folder' # 定义目标文件夹路径 destination_folder = '/path/to/destination/folder' break; case R.id.btn_sin://正弦 if (str != null && !str.equals("")) { if (!# 遍历文件夹中的文件 for file_name in os.listdir(source_folder): file_path = os.path.join(source_folder, filediv_flag && !mul_flag && !minus_flag && !plus_flag && !sin_flag && !cos_flag && !tan_flag && !cot_name) if os.path.isfile(file_path): # 获取文件扩展名 file_extension = file_name.split('.')[-1] _flag && !or_flag && !and_flag && !xor_flag && !not_flag && !sqrt_flag && !square_flag && !recipro # 获取文件类型对应的目录 target_folder = file_types.get(file_extension, '其他') target_folder_pathcal_flag && !factorial_flag && !log_flag && !ln_flag) { double d = Double.parseDouble(str); str = = os.path.join(destination_folder, target_folder) # 如果目标目录不存在,则创建 if not os.path.exists(target Math.sin(d) + ""; sin_flag = true; clear_flag = false; } } break; case R_folder_path): os.makedirs(target_folder_path) # 将文件移动到目标目录 shutil.move(file_path,.id.btn_cos://余弦 if (str != null && !str.equals("")) { if (!div_flag && !mul_flag os.path.join(target_folder_path, file_name)) ``` 以上代码会将`source_folder`文件夹中的文件按照文件类型 && !minus_flag && !plus_flag && !sin_flag && !cos_flag && !tan_flag && !cot_flag && !or_flag && !and_flag && !xor_flag && !not_flag && !sqrt_flag && !square_flag && !reciprocal_flag && !factorial分拣到对应的目录中,目录名根据`file_types`中的定义来确定。你可以根据_flag && !log_flag && !ln_flag) { double d = Double.parseDouble(str); str = Math.cos(d) + ""; 自己的需要修改代码,定义自己的文件类型和目录,以及文件夹路径。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值