遍历特定的python目录

时间:2013-09-24 20:03:08

标签: python python-2.7

我有一个脚本遍历所有目录以连接一个名为classpath的变量。以.jar.properties结尾的文件将添加到类路径变量..

但这太普通了。我希望这只能遍历名为“lib”或“properties”的目录。

我知道我需要在这里坚持:

if os.path.basename(root) in ('lib', 'properties'):

但是不了解python或os.walk以了解它的发展方向。请指教。提前谢谢!

我正在使用python 2.4

#! /usr/bin/env python

import os
import sys
import glob

java_command = "/myapps/java/home/bin/java -classpath "

def run(project_dir, main_class, specific_args):
    classpath = []

    for root, dirs, files in os.walk(project_dir):
        has_properties = False
        for f in files:
            if f.endswith('.jar'):
                classpath.append(os.path.join(root, f))
            if f.endswith('.properties'):
                has_properties = True
        if has_properties:
            classpath.append(root)

    classpath_augment = ':'.join(classpath)

    print java_command, classpath_augment, main_class, specific_args

1 个答案:

答案 0 :(得分:3)

将它贴在循环的顶部:

def run(project_dir, main_class, specific_args):
    classpath = []

    for root, dirs, files in os.walk(project_dir):
        if os.path.basename(root) not in ('lib', 'properties'):
            continue

        has_properties = False
        for f in files:
            if f.endswith('.jar'):
                classpath.append(os.path.join(root, f))
            if f.endswith('.properties'):
                has_properties = True
        if has_properties:
            classpath.append(root)

    classpath_augment = ':'.join(classpath)

    print java_command, classpath_augment, main_class, specific_args

现在它将跳过任何未命名为libproperties的目录。