我正在尝试在我的电脑中的特定位置创建一堆目录和子目录。我的流程是这样的:
- 检查是否存在具有相同目录名的目录。如果是则跳过。
- 如果没有,则创建该目录以及该目录下的预定义子目录。
这是我想出的代码os
module:
def Test():
main_dir = ["FolderA", "FolderB"]
common_dir = ["SubFolder1", "SubFolder2", "SubFolder3"]
for dir1 in main_dir:
if not os.path.isdir(dir1):
for dir2 in common_dir:
os.makedirs("%s/%s" %(dir1,dir2))
我想知道是否有更好的方法来完成同样的任务(可能更短、更高效、更Pythonic)?
Python 遵循这样的哲学
请求原谅比请求许可更好。
所以而不是检查isdir
,如果叶目录已经存在,您只需捕获抛出的异常:
def Test():
main_dir = ["FolderA", "FolderB"]
common_dir = ["SubFolder1", "SubFolder2", "SubFolder3"]
for dir1 in main_dir:
for dir2 in common_dir:
try: os.makedirs(os.path.join(dir1,dir2))
except OSError: pass
您还可以替换字符串插值"%s/%s" %(dir1,dir2)
with os.path.join(dir1, dir2)
另一种更简洁的方法是进行笛卡尔积,而不是使用两个嵌套的 for 循环:
for dir1, dir2 in itertools.product(main_dir, common_dir):
try: os.makedirs(os.path.join(dir1,dir2))
except OSError: pass
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)