Python合并CSV问题, 跪求大神们帮忙解答,谢谢
本帖最后由 不爱吃芥蓝的Cat 于 2022-10-12 09:12 编辑大神们, Python文件在电脑桌面, 设置读取的相对路径一直报错, 我设置的..\..\..
需求: 文件路径:D:\\桌面\Demo5017\关联流量\H10, 但是Demo后面的数字是随机的, 要怎么通过相对路径来读取到H10下面的CSV文件呢,或者是可以弹窗自己选择文件夹路径呢
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 = * len(df)
# 将文件名插入到 DataFrame 第一列
df.insert(0, 'workbook-sheet-position', file_name_sequence)
# 合并 DataFrame
result_dataframe = pd.concat(, 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() 参考这个,先排序https://zhuanlan.zhihu.com/p/372726053 root_dir = r'D:\桌面\Demo5017\关联流量\H10'
带有中文路径的,需要转码,不然出错 Demo后面的数字是随机的,可能问题点在这里,要想办法OS到真正的绝对路径读取 本帖最后由 Unexpectedly 于 2022-10-12 07:09 编辑
我建议直接读取完所有目录放进一个list,然后把结尾不是H10的remove """
作者: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 = * len(df)
# 将文件名插入到 DataFrame 第一列
df.insert(0, 'workbook-sheet-position', file_name_sequence)
# 合并 DataFrame
result_dataframe = pd.concat(, 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() 学习了,虽然没看太懂 支持支持!! 消息队列 os.walk基本搞定…
用它搜出所有文件,再筛出后缀带csv的…
页:
[1]
2