我有一个脚本,用于创建多个文件夹,方法是找到每个文件的第一个字母,然后检查名称的唯一性,然后根据唯一值创建文件夹,并在唯一值之后命名文件夹并完成将相应的文件放入正确的文件夹中。我的代码是
import os
from os import listdir
import dircache
import sys
import shutil
import dircache
import glob
path = "C:\\Users\\hra\\Desktop\\fg"
dirList=os.listdir(path)
for fname in dirList:
print fname
#myList = fname
myList2 = sorted(dirList, key=lambda x:x[0:3])
oldList = [x[0] for x in myList2]
newList = list(set(oldList))
for char in newList:
print newList
root_path = "C:\\Users\\hra\\Desktop\\fg"
folders = newList
for folder in folders:
os.mkdir(os.path.join(root_path,folder))
fCounter = len(glob.glob1("C:\\Users\\hra\\Desktop\\fg","f*"))
mCounter = len(glob.glob1("C:\\Users\\hra\\Desktop\\fg","m*"))
bCounter = len(glob.glob1("C:\\Users\\hra\\Desktop\\fg","b*"))
nLCounter = len(newList)
到目前为止,我已设法让我的代码从唯一值创建和重命名所需的文件但我正在努力将我的文件移动到相应的文件夹,因为它意味着能够提供可能无限数量的文件这可能会导致创建许多独特的值
答案 0 :(得分:1)
在程序结束时添加此内容
import os
for fname in dirList:
os.rename(fname,os.path.join(root_path,fname[0],fname))
或者您可能想要导入shutil并使用
shutil.copyfile(fname, path.join(root_path,fname[0],fname))
相反,因为这是非破坏性的