我们正在使用一个同时部署到Windows和Linux上的代码库-有时部署在不同的目录中.项目中的一个模块应该如何引用项目中的一个非Python资源(CSV文件等)?

如果我们这样做:

thefile = open('test.csv')

或者:

thefile = open('../somedirectory/test.csv')

只有当脚本从一个特定目录或目录的子集运行时,它才会起作用.

我想做的是:

path = getBasePathOfProject() + '/somedirectory/test.csv'
thefile = open(path)

可能吗?

推荐答案

try 使用相对于当前文件路径的文件名.举个例子/我的文件':

fn = os.path.join(os.path.dirname(__file__), 'my_file')

在Python 3.4+中,还可以使用pathlib:

fn = pathlib.Path(__file__).parent / 'my_file'

Python相关问答推荐

使用Python从HTTP打印值

Python:MultiIndex Dataframe到类似json的字典列表

为什么我的(工作)代码(生成交互式情节)在将其放入函数中时不再工作?

使用Python和PRNG(不是梅森龙卷风)有效地生成伪随机浮点数在[0,1)中均匀?

如何使用Tkinter创建两个高度相同的框架(顶部和底部)?

在Python中管理多个OpenGVBO和VAO实例

Tkinter滑动条标签.我不确定如何删除滑动块标签或更改其文本

如何销毁框架并使其在tkinter中看起来像以前的样子?

将HTML输出转换为表格中的问题

将HLS纳入媒体包

DataFrame groupby函数从列返回数组而不是值

从numpy数组和参数创建收件箱

发生异常:TclMessage命令名称无效.!listbox"

如果条件不满足,我如何获得掩码的第一个索引并获得None?

计算每个IP的平均值

pandas在第1列的id,第2列的标题,第3列的值,第3列的值?

在单个对象中解析多个Python数据帧

Flash只从html表单中获取一个值

Pandas:计算中间时间条目的总时间增量

无法在Spyder上的Pandas中将本地CSV转换为数据帧