假设我有以下目录结构:
C:\Test
C:\Test\2009
C:\Test\2009\files\Artists
C:\Test\2009\files\Artists\SnoopDog
C:\Test\2009\files\Artists\SnoopDog\albums.txt
C:\Test\2009\files\Artists\SnoopDog\albums.jpg
C:\Test\2009\files\Artists\SnoopDog\hobbies.doc
C:\Test\2009\files\Artists\SmashMouth\albums.txt
C:\Test\2009\files\Artists\SmashMouth\hobbies.doc
C:\Test\2010\files\Artists\SnoopDog\albums.txt
C:\Test\2010\files\Artists\SnoopDog\albums.jpg
C:\Test\2010\files\Artists\SnoopDog\hobbies.doc
以下是我希望作为目标的目录结构:
^{pr2}$假设C:\Test
包含所有文件,C:\ToDirectory
开始时是一个空目录。在
有一个函数的最有效的方法是什么?我只需给它的源目录C:\Test
和目标目录ToDirectory
,然后脚本转到C:\Test
的最底层,遍历目录中的每个文件,并检查文件名(忽略扩展名)是否是ToDirectory
结构中的一个索引,如果不是,创建它并将文件复制到其中,并将父目录附加在其名称开头的python中?在
我正在使用操作系统列表目录以及操作系统isdir在一系列的nexted循环中,但它看起来非常冗长,尽管它能起作用,但似乎效率低下。。。在
您可以使用递归而不是显式地嵌套循环来实现更短的代码。在
递归并不总是更有效,但你的代码看起来会更好!。在
尝试pythons高级文件操作库(import shutil)
还可以考虑使用pythons优秀的目录遍历功能(from os import walk)
您不需要复制文件,只需重命名目录和文件名。在
相关问题 更多 >
编程相关推荐