Уведомления

Группа в Telegram: @pythonsu

#1 Июль 21, 2017 07:43:25

roggerg
Зарегистрирован: 2015-03-12
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Модул os.walk

Столкнулся с такой вот проблемой. Главный файл программы находится в директории c:\Projects
в этом файле в цикле я обхожу с помощью функции os.walk(“c:\users\vasya\Desktop\foto”)
и хочу открыть определенные файлы, питон их не находит, тогда я вставил в цикл print(os.path.abspath(i))
где i переменная в цикле. И абсолютный путь к файлу стал привязан к папке где основная программ
c:\Projects\foto1.jpg где его естественно нет (принт выводить c:\Projects\foto1.jpg) А почему ? И что здесь не так?

 for x, y, z in os.walk("C:\\users\\vasya\\Desktop\\foto"):
    for i in z:
        print(i)
        print(os.path.abspath(i))
        f = open(i, 'rb')

Офлайн

#2 Июль 21, 2017 08:04:28

krok64
Зарегистрирован: 2017-04-04
Сообщения: 75
Репутация: +  11  -
Профиль   Отправить e-mail  

Модул os.walk

 print(os.path.join(x, i))

Офлайн

#3 Июль 21, 2017 21:46:48

roggerg
Зарегистрирован: 2015-03-12
Сообщения: 61
Репутация: +  0  -
Профиль   Отправить e-mail  

Модул os.walk

Спасибо.

А почему os.path.abspath выдает такую чушь. Ведь абсолютный путь он на то и абсолютный. Мне не понятна логика работы.

Офлайн

#4 Июль 21, 2017 23:55:01

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Модул os.walk

roggerg
чушь в данном случае выдает не python, а кто то более оживленный.
Вот вам наглядный пример (можно опустить некоторые особенности MacOS в плане /private)

MacBook-Pro-Mahmudov:one john_16$ pwd
/tmp/one
MacBook-Pro-Mahmudov:one john_16$ ll two/file.txt
-rw-r--r-- 1 john_16 wheel 0 21 июл 23:46 two/file.txt
MacBook-Pro-Mahmudov:one john_16$ python3
Python 3.5.1 (default, Apr 18 2016, 03:49:24)
[GCC 4.2.1 Compatible Apple LLVM 7.0.2 (clang-700.1.81)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.getcwd()
'/private/tmp/one'
>>> os.path.exists('two/file.txt')
True
>>>
>>> os.path.abspath('two/file.txt')
'/private/tmp/one/two/file.txt'

Ну, а что бы совсем убедиться, читаем документацию.
Разумеется все это актуально, если вы понимаете что такое рабочая директория.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version