Python:如何递归遍历文件夹并将shutil.move()文件移至目标文件夹

时间:2019-02-05 19:54:39

标签: python-3.x directory os.walk file-organization

初学者在这里。我希望能够遍历文件夹及其子目录和文件,并将所有唯一的文件扩展名移动到该文件类型的专用文件夹中。例如.jpg->进入jpg文件夹。 (这全部在Python的IDLE中)

我有此代码:

os.chdir('c:\\users\\dchrie504\\Downloads_2')
# walk through all files and folders to get unique filetypes.
l_Files = os.walk('c:\\users\\dchrie504\\Downloads_2')
fileTypes = []
for walk in l_Files:
    for file in walk[-1]:
        fileTypes.append(file.split('.')[-1])
# make all items lowercase to create distinct values
fileTypes = [x.lower() for x in fileTypes]

# get rid of duplicate filetypes by creating set then back to list. 
fileTypes = set(fileTypes)
fileTypes = list(fileTypes)
# create a folder for each unique filetype. 
for ft in fileTypes:
    os.mkdir(os.getcwd() + '\\' + ft)
fileWalk = os.walk('c:\\users\\dchrie504\\Downloads_2')

#Trying to move files to their respective fileType folder.
for fileType in fileTypes:
     for folder, sub, files in os.walk('c:\\users\\dchrie504\\Downloads_2'):
         for file in files:
             if file.endswith('.' + fileType):
                 shutil.move(file, (os.getcwd() + '\\' + fileType))

问题是执行此部分时出现以下错误:

         for file in files:
             if file.endswith('.' + fileType):
                 shutil.move(file, (os.getcwd() + '\\' + fileType))

错误消息:回溯(最近一次通话最近):   文件“”,第5行,在     shutil.move(文件,(os.getcwd()+'\'+ fileType))   正在移动的文件“ C:\ Users \ dchrie504 \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ shutil.py”,行555     引发错误(“目标路径'%s'已经存在”%real_dst) shutil.Error:目标路径'c:\ users \ dchrie504 \ Downloads_2 \ txt \ New Text Document.txt'已经存在

1 个答案:

答案 0 :(得分:0)

您必须提供完整路径,以便shutil.move会覆盖。

shutil.move(fullpathorigin, fullpathdestination)