Выведите * точный * абсолютный путь к файлам в Python 2 с помощью oswalk + fnmatch - PullRequest
0 голосов
/ 02 октября 2018

Мне было поручено найти способ поиска любого моего файла по всему жесткому диску, используя Python 2 в Windows и Linux.Я был взволнован тем, что собрал воедино различные посты, чтобы придумать решение, только чтобы понять, что пути, выводимые Python, не совсем корректны.Вот мои результаты для Linux: enter image description here

Если каталог /home/pi не запрашивается 3 раза из циклов for, я не должен видеть точное значение /home/pi/chromium-browser указано 3 раза.Я предполагаю, что некоторые из них являются каталогами, и один из них - символическая ссылка / исполняемый файл.Тем не менее, пути к файлам [неверно] одинаковы.

Вот такой же код в Windows:

enter image description here

Проблема в том,то есть , а не , где находится OS HW 2.docx.Скорее, он на самом деле находится в C:\Users\Wade\Dropbox\School\Fall 2018\IT344\HW2\OS HW 2.docx, как показано на снимке экрана ниже: enter image description here В корневом каталоге C:\Users\Wade есть , а не другой экземпляр OS HW 2.docx,как показывает оболочка Python.

Где я ошибаюсь в своем коде?Есть ли более точная альтернатива os.path.abspath()?

1 Ответ

0 голосов
/ 02 октября 2018

Список files в кортежах, возвращаемых os.walk, содержит только имена файлов без имен путей, поэтому перед вызовом os.path.abspath:

print os.path.abspath(os.path.join(root, file))
следует объединить его с именем пути.
...