Прогулочные каталоги

Я ищу конкретный каталог (/ Android).

Я знаю, что в python я могу обходить каталоги с помощью os.walk(root_dir), но проблема здесь в том, что я не знаю, является ли каталог, который я ищу, дочерним по отношению к root_dir или родительским каталогом root_dir.

Есть ли метод, который выполняет ту же операцию, что и os.walk(), но противоположным способом?

Благодарю.

3 ответа

Решение

Вы можете перейти в родительский каталог root_dir используя .. в os.path.abspath(),

import os
parent_dir = os.path.abspath(os.path.join(root_dir, ".."))

Теперь у вас есть parent_directory из root_dir в parent_dir, Ты можешь сделать это root_dir и использовать os.walk(root_dir) снова.

Вот решение, которое я выбрал, однако у меня возникает ошибка при разборе абсолютного пути для копирования файла. Я получаю эту ошибку, я думаю, это потому, что мне нужен абсолютный путь, кто-то знает, как получить абсолютный путь из списка каталогов?

FileNotFoundError: [Errno 2] No such file or directory: 'android\\MyCustomClass.smali'

вот мой код:

def copy_my_custom_class(current_dir):
    subdirs = os.listdir(current_dir)       
    for subdir in subdirs:
        if (subdir == 'android'):       
            my_custom_class_path = os.path.join(subdir, 'MyCustomClass.smali')
            shutil.copyfile('./files/MyCustomClass.smali', my_custom_class_path)    

    copy_my_custom_class(os.chdir(current_dir))

Я решил эту проблему с помощью этого кода:

def copy_my_custom_class(current_dir):
    subdirs = os.listdir(current_dir)
    for subdir in subdirs:
        if (subdir == 'android'):   
            dest_file_path = os.path.join(current_dir, subdir, 'MyCustomClass.smali')
            shutil.copyfile('./files/MyCustomClass.smali', dest_file_path)  
            return 0

    copy_my_custom_class(os.path.dirname(current_dir))
Другие вопросы по тегам