首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >奇怪的python文件路径行为

奇怪的python文件路径行为
EN

Stack Overflow用户
提问于 2018-08-13 09:41:35
回答 2查看 274关注 0票数 3

我有这个文件夹结构,在edi_standards.py中我想打开csv/transaction_groups.csv

但是,只有当我像这样访问os.path.join('standards', 'csv', 'transaction_groups.csv')时,代码才能工作。

我认为应该是os.path.join('csv', 'transaction_groups.csv'),因为edi_standards.pycsv/在同一个文件夹standards/中处于相同的级别。

这是打印__file__的输出,以防您怀疑我说的话:

代码语言:javascript
复制
>>> print(__file__)
~/edi_parser/standards/edi_standards.py
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-13 09:46:05

在运行python文件时,python解释器不会将当前目录更改为正在运行的文件的目录。

在您的例子中,您可能正在运行(从~/edi_parser):

代码语言:javascript
复制
standards/edi_standards.py

为此,您必须使用__file__进行黑客攻击,获取资源文件的目录名并构建资源文件的相对路径:

代码语言:javascript
复制
os.path.join(os.path.dirname(__file__),"csv","transaction_groups.csv")

无论如何,最好不要依赖当前目录来打开资源文件。无论当前目录是什么,这个方法都能工作。

票数 4
EN

Stack Overflow用户

发布于 2018-08-14 11:20:47

我确实同意Jean上面的回答,我想提一下,os.path.join并不认为当前工作目录的绝对路径是第一个参数,例如下面的代码。

代码语言:javascript
复制
>>> os.path.join('Functions','hello')
'Functions/hello'

参见另一个示例

>>> os.path.join('Functions','hello','/home/naseer/Python','hai') '/home/naseer/Python/hai'

正式文件指出,每当我们将绝对路径作为参数给os.path.join时,所有以前的路径参数都会被丢弃,连接将从绝对路径参数继续进行。

我想强调的一点是,我们不应该期望函数os.path.join将与相对路径一起工作。因此,您必须提交绝对路径才能正确定位您的文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51819441

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档