我想复制一个文件夹结构并将其整齐地组合到另一个文件夹结构中。我的问题是,使用os.walk时,似乎找不到找到第一个找到的文件夹的文件夹,然后将该目录下所有下面的文件合并到一个列表中的方法。
例如:
Library (root directory)
-Accessories
--Clock
---Clock.3ds
---Maps
----Map1.jpg
----Map2.jpg
-Dining Chairs
--Dining Chair1
---DiningChair1.3ds
---Maps
----DiningChair.jpg
--DiningChair2
---3D
----DiningChair2.3ds
----DiningChair2.jpg
最终结果:
Library (root directory)
-Accessories
--Clock
---Clock.3ds
---Maps
----Map1.jpg
----Map2.jpg
例如,当我到达Clock.3ds时,我希望它从此处向下移动,收集所有子目录中的所有文件并将它们放入列表中,然后移动到下一个文件夹Dining Chairs(如果只有文件夹)在此目录中,下移到Dining Chairs 1,该文件具有.3ds文件(或任何文件),将子目录中的所有文件复制到列表中,等等。
我当前面临的问题是,当我到达子目录中的最子文件夹时,它将其视为复制文件的单独列表,当我真的想要最上面的文件夹中的文件,然后合并此目录下的所有文件时。
>如果您检查下面的输出代码,当我希望合并此文件夹中的所有文件时,主要问题是输出两个单独列表的“华丽时钟”。
仅供参考:我使用topdown = False希望我可以采取相反的方式-如转到子目录下的目录,向上直到到达没有文件的文件夹,然后复制下面的所有文件,然后标记该目录完成后,继续前进。
import os
import shutil
INPUT_DIRECTORY = 'C:/Users/James/Work/Personal/Python/Projects/3DLibrary/Library_Test/'
# 3D file extensions.
FILE_EXTENSION_3D = (('.max', '.fbx', '.obj', '.skp', '.dwg', 'dxf', '.3ds'))
# Image Extensions
FILE_EXTENSION_2D = (('.jpg', 'jpeg','.png', '.tif', '.tiff', '.bmp', '.gif', '.psd', '.raw', '.ai', '.eps', '.svg', '.svgz'))
ignoreList = []
collectedFiles = []
# Go to child most folder.
for dirpath, dirnames, filenames in os.walk(INPUT_DIRECTORY, topdown=False):
rootDirectory = False
while not rootDirectory:
# Add files to list until reach parent with no files.
print('PATH IS: ', dirpath)
for directory in dirnames:
print('DIRECTORY IS:', directory)
# Create a list of found files to collectedFiles list.
collectedFiles.append(filenames)
# Add this parent folder to a foundDirectory list.
currentDirectory = dirpath
ignoreList.append(currentDirectory)
#print(ignoreList)
# Copy collected files to folder.
print('Copy collected files to folder...')
print(collectedFiles)
print()
# Reset collectedFiles list.
collectedFiles = []
break
输出:
PATH IS: C:/Users/James/Work/Personal/Python/Projects/3DLibrary/Library_Test/3DD_Vase
Copy collected files to folder...
[['3DD_Vase.jpg', '3DD_Vase.max', 'red.jpg', 'stripes.jpg']]
PATH IS: C:/Users/James/Work/Personal/Python/Projects/3DLibrary/Library_Test/Accessories\ornate clock\3d
Copy collected files to folder...
[['clock.max']]
PATH IS: C:/Users/James/Work/Personal/Python/Projects/3DLibrary/Library_Test/Accessories\ornate clock
DIRECTORY IS: 3d
Copy collected files to folder...
[['clock.jpg']]
etc...