如何合并存储在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
现在我想merge
将parquet 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:系统变量路径已更改,与 sys.path 中的值不匹配