亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

創建一個循環以打開文件夾中的子文件夾讀取 json 文件并輸出為 csv

創建一個循環以打開文件夾中的子文件夾讀取 json 文件并輸出為 csv

SMILET 2023-03-08 15:18:44
我正在嘗試在 python 中創建一個循環,它允許我打開一個文件夾,遍歷其中的子文件夾,讀取 json 文件并將它們輸出為 csv。然后為每個子文件夾重復循環。我的目錄如下所示:主文件夾 =“導出”子文件夾 = "Folder1"、"Folder2" 等。子文件夾中的文件 = "file1.json" 、 "file2.json" 等...目前我正在子文件夾(例如“Folder1”)中運行以下代碼來創建輸出文件:import pandas as pdimport ospath = 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。
查看完整描述

1 回答

?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

讓我們嘗試pathlib從defaultdict標準庫


我們可以構建一個子文件夾字典作為鍵,所有文件作為列表中的值。


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)


查看完整回答
反對 回復 2023-03-08
  • 1 回答
  • 0 關注
  • 100 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號