0

我有一个脚本,它遍历所有目录以连接一个名为类路径的变量。以并被添加到类路径变量中的.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
4

1 回答 1

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.

于 2013-09-24T20:22:41.960 回答