Найти - Пользователи
Полная версия: Добавление директории в sys.path. Где ошибка
Начало » Python для новичков » Добавление директории в sys.path. Где ошибка
1
Van
Добрый день. Я только начал изучать 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…” В чем может быть дело???
Singularity
Van
прочесть файл из папки ‘example’
Файл так не откроешь ибо sys.path только питон файлов *.py которые можно только импортировать
Rodegast
sys.path.insert(0,"./example")
> расположенную в одном каталоге с рабочей папкой “my_function”
Читай про пакеты.
Van
Singularity
… sys.path только питон файлов *.py которые можно только импортировать
Импорт файлов *.py из папки действительно работает. С этим разобрался - спасибо.
Но вопрос, как прочесть текстовый файл не из текущей директории не решен.
Rodegast
Читай про пакеты.
почитал. Или не разобрался или это немного не то.
Для более ясного понимания ситуации приложил архив. Задача: из модуля mymod.py(папка my_function) прочесть файл data.txt (папка example).
doza_and
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 ищет файлы ТОЛЬКО в текущей директории.

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


Van
doza_and, спасибо, теперь намного понятнее. Проблему решил указав в open полный путь к файлу. Не совсем то, что хотел получить (т.к. приходится прописывать путь вручную всякий раз когда меняется месторасположение папок), но на данном этапе подойдет. Буду изучать Python дальше…
vrabey
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")
Van
vrabey
нужен для того что бы не лазить постоянно в основной модуль
и не менять его при изменении или добавлении путей к файлам
Это самое то что я хотел. Теперь тема раскрыта полностью. Спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB