gpt4 book ai didi

python - 不同模块导入时如何访问 Python 2.7 中的相对路径

转载 作者:太空狗 更新时间:2023-10-30 01:17:20 25 4
gpt4 key购买 nike

目标:使用从各种 python 模块调用的通用实用程序函数时访问/写入相同的临时文件。

背景:我正在使用 python Unittest 模块来运行通过 pySerial 与仪器接口(interface)的自定义测试集。因为我使用的是 unittest 模块,所以我无法将所需的变量(例如要使用的串行端口)传递到 unittest 的测试用例中。为了解决这个问题,我想创建一个存储和返回腌制数据的模块。我遇到的问题是,当我从 test_case_1() 调用函数 get_foo() 时,它会尝试从基于 test_case_1() 的相对路径加载腌制数据,而不是包含 get_foo() 的实际模块。

值得注意的是,我考虑过使用全局变量,但我想在每次运行中保留一些数据。这意味着所有 python 模块都将关闭,我想重新加载上一次执行时存储的数据。

我在 SO 问题中:Python - how to refer to relative paths of resources when working with code repository ,我以为我在第一个答案中找到了解决方案。令我沮丧的是,这在 Python 2.7 (Debian) 中对我不起作用

当从不同模块调用时,是否有可靠的方法返回特定文件的路径?

最佳答案

可能你知道这一点,但这里首先介绍基础知识:

## 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
""""

关于python - 不同模块导入时如何访问 Python 2.7 中的相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5464176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com