#python #search #path
#python #Поиск #путь
Вопрос:
мой вопрос в значительной степени соответствует названию. мои исследования привели меня к тому, чтобы попробовать что-то вроде этого:
import os
pathname = os.path.abspath("some/relative/directory")
print pathname
эта проблема заключается в том, что всякий раз, когда я делаю что-то подобное, он просто возвращает любой относительный каталог, который я дал, которому предшествовал мой каталог python. например:
C:Python27somerelativedirectory
который даже не является существующим каталогом на моем компьютере. я понимаю, что интерпретатор python выполняет поиск в рабочем каталоге по умолчанию, но я бы хотел, чтобы он искал на всем моем компьютере абсолютный путь, содержащий указанный мной частичный каталог.
цель этого для меня — создать exe-файл (используя py2exe), который может искать произвольный каталог на любом компьютере. есть ли способ сделать это в стандартной библиотеке или через какой-либо доступный модуль — или мне придется самому реализовать алгоритм?
Комментарии:
1. Вы имеете в виду, что хотите выполнить поиск по всему жесткому диску для поиска пути, который выглядит так? Или что?
Ответ №1:
abspath
основан на getcwd
. Скорее всего, ваш текущий рабочий каталог просто не соответствует вашим ожиданиям.
Вы можете изменить код, который запускает ваш скрипт, изменить каталоги вручную или просто использовать chdir
в Python.
Комментарии:
1. @Ben, no abspath не делает ничего подобного. Такие алгоритмы сложнее, чем вы думаете. Например, какой алгоритм обхода дерева вы используете, что вы делаете, если есть более одного совпадения, и что произойдет, если файловая система изменится во время поиска?
2. хм, я довольно новичок в python, но я надеялся, что в каком-то модуле будет существующий алгоритм… — есть ли простой способ вернуть первое найденное совпадение?
3. @Ben, тебе следует отредактировать свой вопрос и добавить что-то похожее на комментарий, который ты удалил.
Ответ №2:
Вы пробовали os.path.realpath("my/relative/dir")
? На самом деле кажется, что каталог может не существовать, но если он существует, он разрешит символические ссылки и еще много чего.
Комментарии:
1. я тоже пробовал это, но он все равно просто возвращает C:Python27myrelativedir — в основном C:Python27 любая строка, которую я передаю.