繁体   English   中英

相对路径方法(Python)

[英]Relative paths approach (python)

我从来没有考虑过任何类型的软件分发(我在该项目中使用python),所以现在我不确定文件名处理的“最佳”或最常用方法。 现在,我使用可执行程序从顶层目录对所有图像,配置文件...使用相对路径。

因此,当从不同位置执行程序时,它自然会失败。 我的问题是,是否可以将程序的beginnig中的当前工作目录更改为__file__的目录名(它在子shell中执行,所以我看不到此问题-但我想独立运行platfrom,所以我不确定Windows如何处理它,或者如果出现问题我可以使用distutils并安装整个程序来解决(我不想这样做)。 还是还有其他(更好)的方法?

因此,基本上我可以轻松解决问题,我只想知道通常要做什么,谢谢您的建议。

最佳实践是使用绝对路径。

使用__file__路径不更改目录,而是使用它来计算用于构建绝对路径的基本路径。 在顶层模块中,添加:

import os.path

BASE = os.path.dirname(os.path.abspath(__file__))

BASEBASE来建立绝对路径:

abspath = os.path.join(BASE, relpath)

更改工作目录几乎是不需要或有用的。

__file__是为给定模块定义的,并非所有模块都具有此属性。 根据文档

__file__是从中加载模块的文件的路径名(如果它是从文件加载的)。 静态链接到解释器的C模块不提供__file__属性。 对于从共享库动态加载的扩展模块,它是共享库文件的路径名。

由于您打算在自己的模块中调用它,因此在linux,windows甚至osx上都不会有任何问题。 当然,可以使用os.path模块来操作路径。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM