У меня есть код, который восстанавливает несколько небольших файлов excel в python, используя pandas, и выполняет некоторый анализ данных на них. Теперь я пытаюсь настроить тестирование моего кода, но у меня возникают проблемы, и я не могу найти достойный ответ при поиске.Как указать каталог корневого модуля в python?
Вот структура каталогов моего кода:
my_project/
__init__.py
code/
__init__.py
analysiscode.py
tests/
__init__.py
testcode.py
data/
datafile.xlsx
Я был первоначально запущен analysiscode.py
из каталога code
, поэтому я восстанавливал файл данных, указав путь так:
import pandas as pd
df = pd.read_excel('../data/datafile.xlsx')
Однако теперь, когда я пытаюсь запустить тесты кода из корневого каталога модуля (то есть my_project
), путь, указанный для перехода в один каталог, прежде чем искать в каталоге данных, больше не работает.
Вот пример сообщения об ошибке:
my_project$ nosetests
IOError: [Errno 2] No such file or directory: '../data/datafile.xlsx'
В данном конкретном случае, я всегда мог указать полный путь, но я ищу для более общего решения, с тем, что кто-то может скачать это кода и по-прежнему работать.
Есть ли способ указать каталог my_project
в python? Другими словами, есть ли способ сказать что-то вдоль линий
mydatadir = my_project/data
df = pd.read_excel(mydatadir+'datafile.xlsx')
Таким образом, я мог бы запустить программу анализа либо из my_project/code
каталога или my_project
директории без необходимости знать полный путь к my_project
?
попробуйте импортировать модуль ОС, то используйте 'os.chdir («..»)' для переключения в последний каталог, а затем выполнить команду как 'ДФ = pd.read_excel („данные/datafile.xlsx“)' –
Спасибо за предложение. К сожалению, запуск кода из каталога 'my_project' с помощью' os.chdir («..")' и точки, удаленные из имени файла в вызове 'read_excel', ищут' my_project /../ data/datafile.xlsx'. То есть он ищет каталог данных, который находится на одном уровне от 'my_project' , который не сработает. – mgig
Какая ОС вы используете? –