如何合并存储在python变量中的多个路径中的所有文件?

Posted

技术标签:

【中文标题】如何合并存储在python变量中的多个路径中的所有文件?【英文标题】:how to merge all files from multiple path stored in a variable in python? 【发布时间】:2020-09-23 05:09:47 【问题描述】:

在下面,我试图以一个可验证的方式获取所有路径:

SUR_INVOICE_FILES = []
listoffolders = []
dir = path_in
inbound = dbutils.fs.ls (dir)
for folder in inbound:
    subfolderlist = dbutils.fs.ls(folder.path)   
    for listoffolders in subfolderlist:
        list_of_sources= listoffolders.path
        SR = dbutils.fs.ls(list_of_sources)
        SUR_INVOICE_FILES.append(listoffolders.path)
        root = (''+re.search('(/\w+)+.+',list_of_sources).group())
        print(root)

'root' 给了我所有的文件路径:

/mnt/datalake/**/SurInvoice/2020-08-31_093551/SurInvoice.parquet
/mnt/datalake/**/SurInvoice/2020-08-31_103115/SurInvoice.parquet
/mnt/datalake/**/SurInvoice/2020-09-01_075931/SurInvoice.parquet
/mnt/datalake/**/SurInvoice/2020-09-17_080933/SurInvoice.parquet

现在我想mergeparquet files 的所有内容放在一个文件中,并将其以JSON 格式存储在不同的目录中。我该怎么做?

【问题讨论】:

【参考方案1】:

使用 pandas 读取,连接数据帧,然后写入 json 文件。像这样的

import pandas as pd
dfs = []
for file_path in file_paths :
    dfs.append(pd.read_parquet(file_path))
df = pd.concat(dfs,ignore_index=True)
df.to_json(path)

将此添加到您的代码中。看看这是否有效:

SUR_INVOICE_FILES = []
listoffolders = []
dfs = []
dir = path_in
inbound = dbutils.fs.ls (dir)
for folder in inbound:
    subfolderlist = dbutils.fs.ls(folder.path)   
    for listoffolders in subfolderlist:
        list_of_sources= listoffolders.path
        SR = dbutils.fs.ls(list_of_sources)
        SUR_INVOICE_FILES.append(listoffolders.path)
        root = (''+re.search('(/\w+)+.+',list_of_sources).group())
        dfs.append(pd.read_parquet(root))
        print(root)
df = pd.concat(dfs,ignore_index=True)
df.to_json(save_path)

【讨论】:

'file_paths' 对我来说是 ->'root'(源的所有 parquet 文件路径),'path' 是目标路径是吗?同样,我收到错误->在中间目录中找到文件:/

以上是关于如何合并存储在python变量中的多个路径中的所有文件?的主要内容,如果未能解决你的问题,请参考以下文章

Javascript画布 - 矩形中的相交圆孔或如何合并多个圆弧路径

是否可以从 python 中的变量中检索 JSON 路径?

Python:系统变量路径已更改,与 sys.path 中的值不匹配

如何将包含 30 多个压缩文件的文件夹存储到 r 中的变量中

如何将多个excel文件合并?

如何通过Python合并具有相同名称但在不同文件夹中的文件的内容?