Как я могу получить доступ к относительным путям в Python 2.7 при импорте различными модулями


Цель: Доступ / запись в одни и те же временные файлы при использовании общей служебной функции, вызываемой из различных модулей python.

Справочная информация: Я использую модуль python Unittest для запуска наборов пользовательских тестов, которые взаимодействуют с инструментами через pySerial. Поскольку я использую модуль unittest, я не могу передать необходимые переменные, например, какой последовательный порт использовать, в тестовый случай unittest. Чтобы обойти это, я хочу создать модуль, который хранит и возвращает маринованные данные. Я столкнулся с проблемой, что когда я вызываю функцию get_foo () из test_case_1 (), она пытается загрузить маринованные данные из относительного пути на основе test_case_1 (), а не фактического модуля, который содержит get_foo ().

Стоит отметить, что я рассматривал возможность использования глобальных переменных, но есть несколько данных, которые я хочу сохранить от запуска к запуску. Это означает, что все модули python будут закрыты, и я хочу повторно загрузить данные, которые были сохранены на предыдущая казнь.

Я в таком вопросе: Python - как ссылаться на относительные пути ресурсов при работе с репозиторием кода , я думал, что нашел решение в первом ответе. К моему ужасу, это не работает для меня в Python 2.7 (Debian)

Существует ли надежный способ вернуть путь к определенному файлу при вызове из разных модулей?

1 5

1 ответ:

Вероятно, вы это знаете, но здесь сначала основы:

## file one: main.py, main program in your working directory
# this code must run directly, not inside IDLE to get right directory name
import os, mytest
curdir=os.path.dirname(__file__) 
print '-'*10,'program','-'*10
print 'Program in',curdir
print 'Module is in', mytest.curdir
print 'Config contents in module directory:\n',mytest.config()
input('Push Enter')

Модуль

## file two: mytest.py, module somewhere in PATH or PYTHONPATH
import os
curdir= os.path.dirname(__file__)

print "Test module directory is "+curdir

## function, not call to function
config=open(os.path.join(curdir,'mycfg.cfg')).read
""" Example output:
Test module directory is D:\Python Projects
---------- program ----------
Program in D:\test
Module is in D:\Python Projects
Config contents in module directory:
[SECTIONTITLE]
SETTING=12

Push Enter
""""