.import os
def path_including_string(big_path,small_string): """ Return parent directory of big_path whose name includes small_string
Searches from end, so if small_string in two subdirectories, then this returns the lowest (longest) path Keyword arguments: :param big_path: input path to be cut down :param small_string: string that defines where to end returned path """ assert small_string in big_path head,tail=os.path.split(big_path) while small_string not in tail: big_path=head head,tail=os.path.split(big_path) return big_pathSimple Test:
>>> big_path="C:\\abc\\def\\ghi\\jkl\\cdef\\qr\\s\\tuv">>> path_including_string(big_path,"de") 'C:\\abc\\def\\ghi\\jkl\\cdef' Test using an environment variable:
>>> mylist=os.environ.get('LIB').split(';')
>>> for p in mylist:
... if 'SDK' in p:
... print p
... print path_including_string(p,'SDK')
...
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\\PlatformSDK\lib
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\\PlatformSDK
C:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib
C:\Program Files\Microsoft SDKs
No comments:
Post a Comment