【问题标题】:Script to change the names of the files in a folder更改文件夹中文件名的脚本
【发布时间】:2022-12-07 22:58:24
【问题描述】:

我有一个文件夹可以说“Word Assignment 1”。它包含 50 多个文件,每个文件属于我班上的不同学生。它们是 pdf 文件。它们被命名为 xxxxxxxxxxx-学生姓名-PHASE 1-MS WORD-ASSIGNMENT 1。xxxxx 代表学生的注册编号和每个文件的文件更改名称。我有一个 Excel 文件,其中包含注册号及其相应的学生姓名。每个学生在提交 pdf 时给出的名称与要求的格式不同。我想要上面提到的文件名。我

我需要一个用 Python 或 Bash 编写的脚本,通过将寄存器号(位于所有文件的第一个位置)与 excel 表进行比较并获取名称并根据格式重命名文件来重命名文件

我尝试使用 bash,但我不知道如何使用可用的 Excel 工作表和文件夹中的不同文件进行搜索。

【问题讨论】:

    标签: python bash file directory rename


    【解决方案1】:

    在以下解决方案中,我做了一些您可能不满意的假设。

    1. 我以为学生的 ID 只是数字字符。如果不是这种情况,请将df["id"] == int(student_id)更改为df["id"] == student_id
    2. 我假定您存储学生 ID 的列名是id,如果不是这样,请将df["id"] 更改为df["your_column_name"]
    3. 同理学生姓名栏名,如果不是name,请将df.iloc[id_]["name"]改为df.iloc[id_]["your_column_name"]
    4. 在这里,名为Word Assignment 1 的文件夹与脚本位于同一文件夹中。如果不是这种情况,请将 path 变量更改为所述文件夹的绝对(或相对)路径。

      解决方案:

      import os
      import pandas as pd
      from typing import List
      
      filename: str = "your_file.xlsx"
      path: str = "./Word Assignment 1"
      
      df: pd.DataFrame = pd.DataFrame(pd.read_excel(filename, sheet_name=0))
      files: List[str] = [f for f in os.listdir(path) if os.path.isfile(os.path.join(path, f))]
      for file in files:
          student_id: str = file.split("-")[0]
          id_: int = df.index[df["id"] == int(student_id)].tolist()[0]
          name: str = df.iloc[id_]["name"]
          os.rename(os.path.join(path, file), os.path.join(path, f"{student_id}-{name}-PHASE 1-MS WORD-ASSIGNEMENT 1.pdf"))
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-17
      • 2014-07-29
      • 2021-07-17
      • 1970-01-01
      • 2021-11-03
      • 2018-07-28
      • 1970-01-01
      相关资源
      最近更新 更多