创建一个循环以打开文件夹中的子文件夹,读取json文件并输出为csv

哈里斯下颚

我正在尝试在python中创建一个循环,该循环将允许我打开一个文件夹,遍历其中的子文件夹,读取json文件并将其输出为csv。然后为每个子文件夹重复循环。

我的目录如下所示:

主文件夹=“导出”

子文件夹=“文件夹1”,“文件夹2”等。

子文件夹中的文件=“ file1.json”,“ file2.json”等...

当前,我正在子文件夹(例如“ Folder1”)中运行以下代码以创建输出文件:

import pandas as pd
import os
path = os.getcwd()
frame = pd.DataFrame()
for filename in os.listdir(os.getcwd()):
    root, ext = os.path.splitext(filename)
    if ext == '.json':
        tmp_frame = pd.read_json(filename)
        frame = frame.append(tmp_frame, ignore_index=True)
        
frame.to_csv(os.path.join(path + ".csv"))

我的问题是如何运行该循环,但如何在主文件夹中打开每个子文件夹,然后运行该循环并为每个子文件夹将文件输出为csv。

谢谢

马那金

让我们尝试pathlibdefaultdict从标准库

我们可以建立一个子文件夹字典作为键,所有文件作为列表中的值。

from pathlib import Path
from collections import defaultdict

your_path = 'target_directory'

file_dict = defaultdict(list)

for each_file in Path(p).rglob('*.csv'): # change this to `.json`
    file_dict[each_file.parent].append(each_file)


print(file_dict)

您的字典将是一个Pathlib对象的列表,该列表将与此类似,关键是子文件夹(我刚刚在此处打印了名称)

{Notebooks : [test.csv,
             test_file.csv,
             test_file_edited.csv] ,
test_csv : [File20200610.csv,
           File20201012 - Copy.csv,
           File20201012.csv] }

那么我们就可以遍历字典并将每个对象保存到目标文件夹中。

for each_sub_folder,files in file_dict.items():
    dfs = []
    for each_file in files:
        
        j = pd.read_json(each_file) #your read method.
        dfs.append(j) # append to list.
     df = pd.concat(dfs)
     df.to_csv(Path(target_path).joinpath(each_sub_folder.name + '.csv'),index=False)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为文件夹中的每个文件创建一个文件夹,但不包含文件夹本身

循环遍历目录的文件夹并在python中的每个文件夹之后创建一个输出

在多个文件夹中创建一个子文件夹

在另一个文件夹中创建相同的子文件夹

(Swift) 如何在一个文件夹中创建子文件夹

在给定文件夹的所有子文件夹中递归创建一个php文件

Python为一个文件夹中的所有文件夹创建多个zip文件

在package.json中创建一个子文件夹

VBA-在文件夹中打开一个.csv文件

播放随机文件夹/子文件夹中的第一个视频

如何仅在一个分支文件夹或子文件夹中显示分支?

在临时文件夹中创建一个文件夹

在iOS应用中的documents文件夹内创建一个文件夹

在一个目录内的文件夹中创建多个子文件夹

在目录的每个子文件夹中创建一个文件夹?

批量在网络文件夹中创建一个文件夹

使用 Package.json 在 $HOME/Sites 文件夹中创建一个文件夹

bash:转换子文件夹内的文件并输出到另一个文件夹

读取子文件夹中的csv文件

使用Python从一个文件夹中读取excel文件并输出到另一个文件夹中的csv文件时收到PermissionError?

如何在一个文件夹中为另一个文件夹中的多个文件创建符号链接

如何读取文件夹中的任何 CSV 文件并合并到一个 CSV 文件中

打开文件并在同一文件夹中创建一个新文件

将所有文件夹和子文件夹中的每个文件压缩为一个单独的zip文件

循环VBA宏以打开文件夹中的文件,导入行,然后使用相对路径移动到另一个文件夹

如何在 Android Studio 中的 Values 文件夹下创建一个名为“dimens”的子文件夹?

使用python复制文件夹和子文件夹,但只复制子文件夹中的第一个文件

如何为每个创建的项目创建一个带有子文件夹的文件夹?

从 Jupiter Notebook (python) 中的另一个文件夹读取 CSV