【问题标题】:Py: Create a folder hierarchy with nested foldersPy:使用嵌套文件夹创建文件夹层次结构
【发布时间】:2018-06-04 13:23:08
【问题描述】:

我正在尝试使用以下内容自动创建项目文件夹结构:

..\Data
..\Data\GPS
..\Data\Tabular
..\Data\Working
..\Documents
..\Documents\Documentation
..\Documents\Pics_Graphics
..\Products

而且,在复杂的事情上,这就是我所带来的......它......工作......但肯定有一种方法可以将我的层次结构包含为一个列表并循环通过它,同时保持“如果存在跳过”条件?我看过https://codereview.stackexchange.com/questions/28715/script-for-creating-a-hierarchy-of-directories?其结果相似,但在这种情况下我无法解开提供的列表,该列表基于计数器。

import os
import errno
data = 'C://temp//Pro_Folder_Structure//Data'
try:
    os.makedirs(data)
except OSError as exception:
    if exception.errno != errno.EEXIST:
        raise
    else:
        print ("\nBE CAREFUL! Directory %s already exists." % data)

datagps = 'C://temp//Pro_Folder_Structure//Data//GPS'
try:
    os.makedirs(datagps)
except OSError as exception:
    if exception.errno != errno.EEXIST:
        raise
    else:
        print ("\nBE CAREFUL! Directory %s already exists." % datagps)

dataworking = 'C://temp//Pro_Folder_Structure//Data//Working'
try:
    os.makedirs(dataworking)
except OSError as exception:
    if exception.errno != errno.EEXIST:
        raise
    else:
        print ("\nBE CAREFUL! Directory %s already exists." % dataworking)

datatab = 'C://temp//Pro_Folder_Structure//Data//Tabular'
try:
    os.makedirs(datatab)
except OSError as exception:
    if exception.errno != errno.EEXIST:
        raise
    else:
        print ("\nBE CAREFUL! Directory %s already exists." % datatab)

docs = 'C://temp//Pro_Folder_Structure//Documents'
try:
    os.makedirs(docs)
except OSError as exception:
    if exception.errno != errno.EEXIST:
        raise
    else:
        print ("\nBE CAREFUL! Directory %s already exists." % docs)

document = 'C://temp//Pro_Folder_Structure//Documents//Documentation'
try:
    os.makedirs(document)
except OSError as exception:
    if exception.errno != errno.EEXIST:
        raise
    else:
        print ("\nBE CAREFUL! Directory %s already exists." % document)

pics = 'C://temp//Pro_Folder_Structure//Documents//Pics_Graphics'
try:
    os.makedirs(pics)
except OSError as exception:
    if exception.errno != errno.EEXIST:
        raise
    else:
        print ("\nBE CAREFUL! Directory %s already exists." % pics)

prod = 'C://temp//Pro_Folder_Structure//Products'
try:
    os.makedirs(prod)
except OSError as exception:
    if exception.errno != errno.EEXIST:
        raise
    else:
        print ("\nBE CAREFUL! Directory %s already exists." % prod) 

【问题讨论】:

    标签: python-3.x directory hierarchy


    【解决方案1】:

    您可以使用 for 循环。根据目录的深度以及实用性的原因,您也可以使用嵌套的 for 循环。

    所以你可以这样做:

    directories = ['Data','GPS','Data//GPS',....,'Products']
    basedirectory = 'C://temp//Pro_Folder_Structure//'
    for (i in range (len (directories)):
        newDir = basedirectory + directories[i]
        try:
            os.makedirs(newDir)
        except OSError as exception:
            if exception.errno != errno.EEXIST:
               raise
            else:
               print ("\nBE CAREFUL! Directory %s already exists." % newDir)
    

    【讨论】:

    • 已更改(i 到 i,前面没有括号,它起作用了!谢谢!
    • 哈哈是的,我最近用 Java 编程太多了,所以括号太多了。没问题,很高兴我能帮上忙!