Прогулочные каталоги
Я ищу конкретный каталог (/ 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))