为了账号安全,请及时绑定邮箱和手机立即绑定

使用代码存储库时如何引用资源的相对路径

使用代码存储库时如何引用资源的相对路径

慕容708150 2019-12-09 13:11:55
我们正在使用一个代码存储库,该代码存储库同时部署到Windows和Linux中-有时位于不同的目录中。项目内部的模块之一应如何引用项目中的非Python资源之一(CSV文件等)?如果我们做类似的事情:thefile=open('test.csv')要么:thefile=open('../somedirectory/test.csv')仅当从一个特定目录或目录的一部分运行脚本时,此脚本才有效。我想做的是这样的:path=getBasePathOfProject()+'/somedirectory/test.csv'thefile=open(path)可能吗?
查看完整描述

3 回答

?
繁华开满天机

TA贡献1816条经验 获得超4个赞

尝试使用相对于当前文件路径的文件名。“ ./my_file”的示例:


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

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


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


查看完整回答
反对 回复 2019-12-09
?
慕少森

TA贡献2019条经验 获得超9个赞

我经常使用与此类似的东西:


import os

DATA_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), 'datadir'))


# if you have more paths to set, you might want to shorten this as

here = lambda x: os.path.abspath(os.path.join(os.path.dirname(__file__), x))

DATA_DIR = here('datadir') 


pathjoin = os.path.join

# ...

# later in script

for fn in os.listdir(DATA_DIR):

    f = open(pathjoin(DATA_DIR, fn))

    # ...

变量


__file__

保存您在其中编写该代码的脚本的文件名,因此您可以创建相对于脚本的路径,但仍使用绝对路径编写。由于以下几个原因,它运行良好:


路径是绝对的,但仍然是相对的

该项目仍可以部署在相对的容器中

但是您需要注意平台兼容性-Windows的os.pathsep与UNIX不同。


查看完整回答
反对 回复 2019-12-09
  • 3 回答
  • 0 关注
  • 617 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号