csv文件根据第4列拆分

需求: export_jyt_20241016.csv 文件需要按照市州县分割成多个文件

1.统计文件总行数

import csv


def count_rows_in_csv(file_path):
    # 初始化行数计数器
    row_count = 0

    # 使用csv.reader读取CSV文件
    with open(file_path, mode='r', newline='', encoding='utf-8') as file:
        reader = csv.reader(file)
        # 遍历每一行
        for _ in reader:
            row_count += 1

    return row_count


# 调用函数并指定文件路径
file_path = 'export_jyt_20241016.csv'
row_count = count_rows_in_csv(file_path)
print(f"The file {file_path} contains {row_count} rows.")

2.根据文件第四列分类,拆分成多个文件

import csv
import os

def split_csv_by_column(file_path, column_index=3, output_dir='chaifen'):
    # 检查输出目录是否存在,如果不存在则创建它
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)

    # 使用csv.reader读取CSV文件
    with open(file_path, mode='r', newline='', encoding='utf-8') as file:
        reader = csv.reader(file)
        # 跳过表头行(如果需要的话)
        # next(reader)
        # 将所有行读入一个列表中
        all_rows = [row for row in reader]

    # 根据指定列的值创建一个字典,键是该列的值,值是包含这些值的所有行的列表
    split_data = {}
    for row in all_rows:
        value = row[column_index]
        if value not in split_data:
            split_data[value] = []
        split_data[value].append(row)

    # 对于每个不同的值,创建一个新的CSV文件,并保存到指定的目录下
    for value, rows in split_data.items():
        output_file_path = os.path.join(output_dir, f'sorted_{value}_{file_path}')
        with open(output_file_path, mode='w', newline='', encoding='utf-8') as file:
            writer = csv.writer(file)
            # 写入排序后的数据
            writer.writerows(rows)
        print(f"Data with D column value '{value}' has been written to {output_file_path}")

# 调用函数并指定文件路径、需要拆分的列索引以及输出目录
split_csv_by_column('export_jyt_20241016.csv', 3, 'chaifen')

3.统计chaifen目录下面所有.csv条数对比,看数量是否一致

import csv
import os


def count_rows_in_directory(directory_path):
    total_rows = 0

    # 遍历目录中的所有文件
    for filename in os.listdir(directory_path):
        # 检查是否为 CSV 文件
        if filename.endswith('.csv'):
            file_path = os.path.join(directory_path, filename)
            # 计算当前 CSV 文件的行数
            with open(file_path, mode='r', newline='', encoding='utf-8') as file:
                reader = csv.reader(file)
                row_count = sum(1 for _ in reader)
                total_rows += row_count
                print(f"{filename} contains {row_count} rows.")

    return total_rows

# 统计zz目录下面所有csv条数
# 调用函数并指定目录路径
directory_path = 'chaifen'
total_rows = count_rows_in_directory(directory_path)
print(f"The directory {directory_path} contains a total of {total_rows} rows across all CSV files.")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大侠运维联盟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值