吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1111|回复: 16
收起左侧

[已解决] Python合并CSV问题, 跪求大神们帮忙解答,谢谢

[复制链接]
不爱吃芥蓝的Cat 发表于 2022-10-12 00:05
本帖最后由 不爱吃芥蓝的Cat 于 2022-10-12 09:12 编辑

大神们, Python文件在电脑桌面, 设置读取的相对路径一直报错, 我设置的..\..\..

需求: 文件路径:D:\\桌面\Demo5017\关联流量\H10, 但是Demo后面的数字是随机的, 要怎么通过相对路径来读取到H10下面的CSV文件呢,  或者是可以弹窗自己选择文件夹路径呢
[Asm] 纯文本查看 复制代码
import pandas as pd
import os


def merge_csv():
    # 待处理的目录
    input_path = os.path.join(root_dir, 'H10')
    result_path = os.path.join(root_dir, 'H10')
    result_name = r'HomeAutomation.csv'  # 合并后要保存的文件名
    # 获取该目录下所有文件名
    file_list = os.listdir(input_path)
    result_dataframe = pd.DataFrame()
    for index, file_name in enumerate(file_list, start=1):
        print(f'正在处理第 {index} 个文件……')
        # 过滤隐藏文件
        if not file_name.startswith('.'):
            # 根据文件名读取文件
            df = pd.read_csv(os.path.join(input_path, file_name), encoding='utf-8-sig')
            # 创建与 DataFrame 等长的 文件名列表
            file_name_sequence = [file_name] * len(df)
            # 将文件名插入到 DataFrame 第一列
            df.insert(0, 'workbook-sheet-position', file_name_sequence)
            # 合并 DataFrame
            result_dataframe = pd.concat([result_dataframe, df], axis=0, sort=False)
    print('正在输出到 csv 文件……')
    # 将合并后的 DataFrame 输出到 csv 文件中
    result_dataframe.to_csv(os.path.join(result_path, result_name), encoding='utf-8-sig', index=False, header=True)
    print(f'文件已成功保存至: {os.path.join(result_path, result_name)}')

    def pick_package():
        # 打开windows窗口,选择一个文件夹
        return eg.diropenbox()

if __name__ == '__main__':
    root_dir = r'D:\桌面\Demo5017\关联流量\H10'
    merge_csv()

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
为之奈何? + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

lyn038111 发表于 2022-10-12 00:25
参考这个,先排序https://zhuanlan.zhihu.com/p/372726053
Takitooru 发表于 2022-10-12 00:28
root_dir = r'D:\桌面\Demo5017\关联流量\H10'
带有中文路径的,需要转码,不然出错
lizy169 发表于 2022-10-12 06:56
Demo后面的数字是随机的,可能问题点在这里,要想办法OS到真正的绝对路径读取
Unexpectedly 发表于 2022-10-12 07:08
本帖最后由 Unexpectedly 于 2022-10-12 07:09 编辑

我建议直接读取完所有目录放进一个list,然后把结尾不是H10的remove
luxingyu329 发表于 2022-10-12 07:30
[Python] 纯文本查看 复制代码
"""
作者:luxingyu329
日期:2022年 10月 12日  07:29 
"""
import pandas as pd
import os
from tkinter.filedialog import askdirectory


def merge_csv():
    # 待处理的目录
    input_path = root_dir    # os.path.join(root_dir, 'H10')
    result_path = root_dir   # os.path.join(root_dir, 'H10')
    result_name = r'HomeAutomation.csv'  # 合并后要保存的文件名
    # 获取该目录下所有文件名
    file_list = os.listdir(input_path)
    result_dataframe = pd.DataFrame()
    for index, file_name in enumerate(file_list, start=1):
        print(f'正在处理第 {index} 个文件……')
        # 过滤隐藏文件
        if not file_name.startswith('.'):
            # 根据文件名读取文件
            df = pd.read_csv(os.path.join(input_path, file_name), encoding='utf-8-sig')
            # 创建与 DataFrame 等长的 文件名列表
            file_name_sequence = [file_name] * len(df)
            # 将文件名插入到 DataFrame 第一列
            df.insert(0, 'workbook-sheet-position', file_name_sequence)
            # 合并 DataFrame
            result_dataframe = pd.concat([result_dataframe, df], axis=0, sort=False)
    print('正在输出到 csv 文件……')
    # 将合并后的 DataFrame 输出到 csv 文件中
    result_dataframe.to_csv(os.path.join(result_path, result_name), encoding='utf-8-sig', index=False, header=True)
    print(f'文件已成功保存至: {os.path.join(result_path, result_name)}')


if __name__ == '__main__':
    root_dir = askdirectory(title='选择CSV文件目录', initialdir=r'D:\桌面')
    # root_dir = r'D:\桌面\Demo5017\关联流量\H10'
    merge_csv()
szf872591 发表于 2022-10-12 08:10
学习了,虽然没看太懂
aa2923821a 发表于 2022-10-12 08:38
支持支持!!
q197843 发表于 2022-10-12 09:00
消息队列
无闻无问 发表于 2022-10-12 09:10
os.walk基本搞定…
用它搜出所有文件,再筛出后缀带csv的…
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 05:21

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表