给每个文件都建立一个文件夹 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