给每个文件都建立一个文件夹 with Python

需求

有时文件比较多,比如50个SQL文件都在一个目录中,需要将他们每一个都建立一个文件夹,每个文件夹里面放入一个SQL文件,若手动建立文件夹太麻烦,因此使用 Python 脚本自动化实现。

代码

import os
from shutil import move
def file_each_dir(dir_path,dir_names):
    """将指定目录的文件,分别建立文件夹转移到 `dir_names` 列出的文件夹名称中

    Args:
        dir_path (str): 文件所在的文件夹
        dir_names (List): 要建立的文件夹名称列表
    """
    files = os.listdir(path=dir_path)
    assert len(files)==len(dir_names), "文件夹数量和文件数据不相等"
    lenght_files = len(files)
    for i in range(lenght_files):
        des_dir_path = dir_path + "/" + dir_names[i]
        os.mkdir(des_dir_path)
        src_file_path = dir_path + "/" + files[i]
        des_file_path = des_dir_path + "/" + files[i]
        move(src_file_path, des_file_path)
        print(src_file_path + " -> " + des_file_path)

测试

当前文件目录结构是:

dir_sql/
├── test1.sql
├── test2.sql
├── test3.sql
└── test4.sql

想要将这些SQL文件分别放入四个文件夹中:

if __name__ == '__main__':
    to_dir = './dir_sql'
    dir_names=['1','2','3','4']
    file_each_dir(to_dir,dir_names=dir_names)

第一个参数是这些文件当前在哪个文件夹中,第二个参数是文件的列表,必须要指定,是指定的 1-4 四个数字作为新建的文件夹名字。运行后结构是:

dir_sql/
├── 1
│   └── test1.sql
├── 2
│   └── test2.sql
├── 3
│   └── test3.sql
└── 4
    └── test4.sql
posted @ 2020-10-12 17:05  何大卫  阅读(775)  评论(0编辑  收藏  举报