如何使用 python 和 pandas 重命名子文件夹中的多个 .Json 文件

How to rename multiple .Json files within a subfolder using python and pandas

我在尝试重命名大量子文件夹中的 Json 文件时遇到困难。我想要做的是用计数变量替换 json 文件。因为,每个 .json 文件在其各自的文件夹中以 messages_1.json 结尾。

此处 Person_1、Person_2、Person_3、......、Person_n 是收件箱文件夹中的各个子文件夹

示例文件结构

- C:/abc/def/ghi/klmn/opq/rst/uvw/xyz/messages/Inbox:
   - Person_1
     - message_1.json
   - Person_2
     - message_1.json
   - Person_3:
      - message_1.json
   .
   .
   .
   .
   - Person_n:
      - message_1.json

此外,我想将它们保存为单个熊猫数据框,然后将其导出为 csv 文件,以便我可以在创建的数据框上进一步工作。

这是我迄今为止尝试过但卡住了的方法:

我试过的代码:

directory = os.path.dirname(os.path.realpath(sys.argv[0]))
for root, dirs, files in os.walk("C:/abc/def/ghi/klmn/opq/rst/uvw/xyz/messages/inbox/"):
    
    for name in files:
        
        if name.endswith((".json")):
            folder_names = os.path.relpath(root, directory)
            
            json_files = os.path.join(folder_names, name)

我想要得到的输出

- Person_1
  - message_1.json
- Person_2
   - message_2.json
- Person_3:
  - message_3.json
   .
   .
   .
   .
- Person_n:
 - message_n.json

All replaced json names and then a single csv file with all json files

任何帮助将不胜感激我不知道如何得到这个

使用pathlib构建数据框,然后您可以重命名文件。

from pathlib import Path
import pandas as pd

pth = Path("C:/abc/def/ghi/klmn/opq/rst/uvw/xyz/messages/inbox/")

data = [(f, f.parent, f.stem, f.suffix)
        for f in pth.rglob('*.json')]

# load into dataframe
df = pd.DataFrame(data=data, columns=['pth', 'dname', 'fname', 'suffix'])

# create new filename
df['new_name'] = (
  df['fname'].str.split('_').str[0] +
  '_' +
  (df.index + 1).astype(str) +
  df['suffix']
)

# now rename each file
for row in df.itertuples():
    row.pth.rename(Path(row.dname) / row.new_name)