0

我有一个脚本,旨在通过查找每个文件的第一个字母然后检查名称的唯一性来创建多个文件夹,然后根据唯一值创建文件夹并在唯一值之后命名文件夹,最后将相应的文件到正确的文件夹中。我的代码是

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)

到目前为止,我已经设法让我的代码从唯一值创建和重命名所需的文件,但我正在努力将我的文件移动到相应的文件夹中,因为它意味着能够处理可能无限数量的文件,这可能会导致对正在创造的许多独特价值

4

1 回答 1

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))

相反,因为这是非破坏性的

于 2013-01-28T14:36:10.907 回答