Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 11, 2014 11:19:42

Van
От: Харьков (Украина)
Зарегистрирован: 2013-11-09
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Добавление директории в sys.path. Где ошибка

Добрый день. Я только начал изучать Python поэтому, если что, прошу сильно не бить.
Пытаюсь разобраться с sys.path и добавить туда папку с именем “example”, расположенную в одном каталоге с рабочей папкой “my_function”. Делаю так:

import sys
pp = str (sys.path[0])
pp = pp.split('my_function')
pp = pp[0] + 'example'
sys.path.append(pp)
print(sys.path)
После этого пытаюсь прочесть файл из папки ‘example’ и получаю ошибку “No such file or directory…” В чем может быть дело???

Офлайн

#2 Янв. 11, 2014 11:47:21

Singularity
Зарегистрирован: 2011-07-28
Сообщения: 1387
Репутация: +  75  -
Профиль   Отправить e-mail  

Добавление директории в sys.path. Где ошибка

Van
прочесть файл из папки ‘example’
Файл так не откроешь ибо sys.path только питон файлов *.py которые можно только импортировать

Офлайн

#3 Янв. 11, 2014 13:04:39

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Добавление директории в sys.path. Где ошибка

sys.path.insert(0,"./example")
> расположенную в одном каталоге с рабочей папкой “my_function”
Читай про пакеты.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#4 Янв. 12, 2014 08:14:30

Van
От: Харьков (Украина)
Зарегистрирован: 2013-11-09
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Добавление директории в sys.path. Где ошибка

Singularity
… sys.path только питон файлов *.py которые можно только импортировать
Импорт файлов *.py из папки действительно работает. С этим разобрался - спасибо.
Но вопрос, как прочесть текстовый файл не из текущей директории не решен.
Rodegast
Читай про пакеты.
почитал. Или не разобрался или это немного не то.
Для более ясного понимания ситуации приложил архив. Задача: из модуля mymod.py(папка my_function) прочесть файл data.txt (папка example).

Прикреплённый файлы:
attachment Python_works.zip (975 байт)

Офлайн

#5 Янв. 12, 2014 09:06:30

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Добавление директории в sys.path. Где ошибка

Van
Или не разобрался или это немного не то.

Архив ваш не читал но…
Все примитивно. Файлы бывают 3 типов - модули питона (*.py,*.pyc,*.pyo…) они грузятся процедурой import
исполняемые файлы - их для выполнения ищет операционная система, которую и просят их выполнить (subprocess.check_call(“some.exe”))
и все прочие с ними работа при помощи open и ее родственников.

Для поиска файлов важно какие функции вы используете (вы можете использовать open для a.py не взирая на тип).

1 import - для версии 3 и 2 поиск идет по разному. Грубо говоря поиск идет в sys.path и текущей директории (os.getcwd,os.chdir)
2 subprocess.check_call операционная система ищет в текущей директории или в директориях указанных в переменной окружения path. Из скрипта ее можно получить
os.environ["path"]
3 open ищет файлы ТОЛЬКО в текущей директории.

Для любой из этих функций можно указать полный путь или путь относительно текущей директории.
Есть еще изощренный способ - в текущей директории понаделать символьных ссылок на нужные файлы.




Отредактировано doza_and (Янв. 12, 2014 09:07:39)

Офлайн

#6 Янв. 14, 2014 06:31:22

Van
От: Харьков (Украина)
Зарегистрирован: 2013-11-09
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Добавление директории в sys.path. Где ошибка

doza_and, спасибо, теперь намного понятнее. Проблему решил указав в open полный путь к файлу. Не совсем то, что хотел получить (т.к. приходится прописывать путь вручную всякий раз когда меняется месторасположение папок), но на данном этапе подойдет. Буду изучать Python дальше…

Офлайн

#7 Янв. 14, 2014 11:40:49

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

Добавление директории в sys.path. Где ошибка

Van
Проблему решил указав в open полный путь к файлу. Не совсем то, что хотел получить (т.к. приходится прописывать путь вручную всякий раз когда меняется месторасположение папок)

сам только учусь (к советам надо относиться подвергая их проверке и критике) но вот подправил твои модуль по своему разумению

mymod.py
# -*- coding: utf-8 -*-
import path
def countLines(name):
    u'''
    функция читает входной файл и
    подчитывает число строк в нем
    '''
    my_file = open(name)
    my_read = my_file.readlines()
    my_len = len(my_read)
    return my_len
if __name__ == '__main__':
    print countLines(path.nameFile)

импортировать каталог example не надо там модулей нет
——————————————————————————–
модуль path.py - находится в одном каталоге с mymod.py
нужен для того что бы не лазить постоянно в основной модуль
и не менять его при изменении или добавлении путей к файлам
import os
parendir = os.path.dirname(os.getcwd())
nameFile = os.path.join(parendir, "example", "data.txt")

Прикреплённый файлы:
attachment Python_works_v_2.zip (1,2 KБ)

Офлайн

#8 Янв. 16, 2014 05:34:33

Van
От: Харьков (Украина)
Зарегистрирован: 2013-11-09
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Добавление директории в sys.path. Где ошибка

vrabey
нужен для того что бы не лазить постоянно в основной модуль
и не менять его при изменении или добавлении путей к файлам
Это самое то что я хотел. Теперь тема раскрыта полностью. Спасибо.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version