Python:如何将具有特定名称的文件移动到具有相同名称的文件夹

黑胡子

我有一种情况,我正在工作的目录有很多文件和文件夹(类似的东西):

AAA_SUBFOLDER
AAA_FILE_1
AAA_FILE_2
BBB_SUBFOLDER
BBB_FILE_1
BBB_FILE_2

所以文件和子文件夹都以AAA开头BBB(以 CCC、DDD..开头)。我想要做的是一个python 脚本,它将所有AAA文件移动AAA子文件夹,并对所有具有相同名称的文件和子文件夹进行迭代,以获得如下内容:

AAA_SUBFOLDER
  - AAA_FILE_1
  - AAA_FILE_2
BBB_SUBFOLDER
  - BBB_FILE_1
  - BBB_FILE_2
...

你能帮我吗?提前致谢!

贝格尔

此解决方案应该适合您的要求。步骤:

  1. 确保你已经安装了 python
  2. 将脚本保存到文件中(比如 main.py)
  3. 使用 2 个参数运行保存的文件 - 1 表示要组织的路径,2 表示子文件夹的分隔符。例子:python main.py -p "D:\path\to\files" -d "_"

!! 这不会重新排列内部文件夹,只会重新排列顶层。

如果您有任何问题,我很乐意提供帮助。

import os
import argparse
from pathlib import Path

def parse_args() -> tuple:
    ap = argparse.ArgumentParser()
    ap.add_argument("-p", "--path", default="./files", help="path to the folder that needs organizing")
    ap.add_argument("-d", "--delimiter", default="_", help="delimiter of file names")
    return ap.parse_args()

args = parse_args()

for filename in os.listdir(args.path):
    file_path = os.path.join(args.path, filename)
    if not os.path.isfile(file_path):
        continue
    subfolder_name = Path(filename).stem.split(args.delimiter)[0]
    subfolder_path = os.path.join(args.path,subfolder_name)
    os.makedirs(subfolder_path, exist_ok=True)
    os.rename(file_path, os.path.join(subfolder_path, filename))


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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将文件移动到具有相同名称的相应文件夹中?

如何将具有特定名称的文件从一个文件夹移动到另一个文件夹

将多个文件移动到具有相同名称的不同文件夹

将包含字符串的文件移动到与原始文件具有相同名称的子文件夹(PowerShell)

将具有相同名称的多个文件移动到以文件路径命名的新文件夹中

如何删除具有特定名称的文件夹

批处理命令将png文件移动到文件夹中具有相同名称的文件和文件夹

将文件从一个文件夹移动到另一个具有相同名称的文件夹

Bash:如何将具有相同名称的多个文件复制到多个文件夹

如何将具有给定名称的附件(图像)导出到文件夹?

pentaho勺子/ pid:如何每次都将文件移动到具有不同名称的文件夹中?

如何在Python中删除具有特定名称的文件夹?

将不同文件夹中具有相同名称的文件移动到一个文件夹中

Powershell命令复制具有特定名称的文件,并粘贴到与当前日期相同名称的文件夹中

如何将包含具有特定扩展名的文件的文件夹移动到目标文件夹?

如何将具有相同名称的文件夹递归复制到Google Colab中的另一个文件夹

如何将文件递归复制到具有特定名称的所有文件夹中(首选批处理文件)

将文件从单个文件夹移动到具有文件名等名称的现有文件夹

如何从具有特定名称模式的文件夹的内容创建 zip 文件?

如何在文件夹中打印具有特定名称的文件

如何在VBA中打开具有特定名称的文件夹中的文件?

如何从C#中具有相同名称的文件夹中打开文件

如何使用Powershell删除具有特定名称的所有文件夹

将所有文件夹和文件移动到目录Linux中具有相同主题名称的文件夹

将具有特定名称的文件夹提取到并行目录结构?

将文件移动到具有几乎相同模式的特定文件夹中

在子文件夹中找到具有特定名称的空文件夹?

如何压缩具有特定名称的多个文件夹?

如何在服务器上查找具有特定名称的文件夹?