1

私は値 (inputCategory) を検索するこのコードを持っています。これは多くの場合、パスの最後にあります (たとえば/blah/blah/<category/blah、または時々/blah/blah/<category>

def category_search(inputDirectory, inputCategory, root):
    categorySearch = os.path.split(os.path.normpath(inputDirectory)) 
    if categorySearch[1] == inputName:
        Logger.info("SEARCH: Files appear to be in their own directory")
        categorySearch2 = os.path.split(os.path.normpath(categorySearch[0]))
        if categorySearch2[1] == twoCategory or categorySearch2[1] == oneCategory:
            if not inputCategory:
            Logger.info("SEARCH: Determined Category to be: %s", categorySearch2[1])
                inputCategory = categorySearch2[1]
        elif not inputCategory:
            Logger.error("SEARCH: Could not identify category from the directory structure.")
            sys.exit(-1)
        else:
            pass

    elif categorySearch[1] == twoCategory or categorySearch[1] == oneCategory:
        if os.path.isdir(os.path.join(inputDirectory, inputName)):
            inputDirectory = os.path.join(inputDirectory, inputName)
        else:
            Logger.info("SEARCH: The directory passed is the root directory for category %s", categorySearch[1])
            Logger.info("SEARCH: We will try and determine which files to process, individually")
            root = 1
        if not inputCategory:
            Logger.info("SEARCH: Determined Category to be: %s", categorySearch[1])
            inputCategory = categorySearch[1]
    elif not inputCategory:
        Logger.error("SEARCH: Could not identify category from the directory structure")
        sys.exit(-1)
    else:
        Logger.info("SEARCH: The directory passed does not appear to include a category")
        root = 1
    return inputDirectory, inputCategory, root 

しかし、コードはあまり動的ではなく、たとえば次のようなパスを取得した場合にスローされる可能性があります/blah/blah/<category>/blah/blah

このコードを最適化し、上記のような状況をキャッチする方法についての情報を探しています。

私はPythonでかなり新しいので、優しくしてください:)助けてくれてありがとう!

4

1 に答える 1

0

私はパスチェックのためにこのようなものを使用しましたが、あなたが探しているものかどうかはわかりません... im Pythonでも非常に緑色です!

# deconstruct the folder: /a/b/c --> /a/b --> /a --> /
pathHead, pathTail = os.path.split(inputDirectory)  
while pathTail and ( pathTail != inputCategory ): 
    pathHead,pathTail = os.path.split(pathHead)

if not pathTail:
    print 'didnt find category'
else:
    print 'found category: ',pathTail , ' in path: ' , pathHead

編集:elifをelseに修正...

于 2013-02-20T11:53:57.557 に答える