分析添加导入路径的影响

时间:2018-06-26 13:23:59

标签: python path

我具有以下目录结构:

TestFolder:
    test.py
CommonFolder:
    common.py

test.py中,我需要导入common.py

为此,在test.py中,将CommonFolder的路径添加到系统路径中。

这是我的开始:

sys.path.append(os.path.join(os.path.dirname(os.path.dirname(__file__)), 'CommonFolder'))

然后我发现/在几乎所有操作系统中都是有效的分隔符,因此我将其更改为:

sys.path.append(os.path.dirname(os.path.dirname(__file__)) + '/CommonFolder')

然后我发现..在几乎所有操作系统中也是有效的语法,因此我将其更改为:

sys.path.append(os.path.dirname(__file__) + '/../CommonFolder')

我的问题:

  1. 我的上述假设是否正确,代码是否可以在每个OS上正确运行?
  2. 在最后一次更改中,我基本上在系统路径中添加了一条稍长的路径。更准确地说-是FullPath/TestFolder/../CommonFolder而不是FullPath/CommonFolder。运行时对此有影响吗?我想每个import语句的执行速度可能会稍微慢一些,但是即使这样,这也是很小的。有没有充分的理由不这样做呢?

谢谢!

2 个答案:

答案 0 :(得分:1)

如果要编写跨多个操作系统的代码,最好不要尝试自己构造路径。作为示例,在Linux和Windows之间,您会立即遇到正斜杠与反斜杠的问题。

我建议您查看Python pathlib库。它处理用于不同操作系统的生成路径。

https://docs.python.org/3/library/pathlib.html

这是一个有关此主题以及如何使用该库的很棒的博客: https://medium.com/@ageitgey/python-3-quick-tip-the-easy-way-to-deal-with-file-paths-on-windows-mac-and-linux-11a072b58d5f

更新:

使用更具体的答案进行更新。

关于目录路径,只要您不自行构建路径(使用诸如pathlib之类的实用程序),创建的路径就可以了。 Linux,Mac和Windows都支持相对路径(mac和linux都是Unix ~based)。

关于它是否有效,除非您经常动态地加载或重新加载源文件(这是不常见的),否则大多数文件在运行代码之前为loaded into memory,因此不会对设置造成性能影响以这种方式设置文件路径。

答案 1 :(得分:0)

os.path.join()用于操作系统独立的路径分隔符,而不是/

示例:os.path.join(os.path.dirname(__file__),"..","CommonFolder")

或者,您也可以通过将名称为__init__.py的空文件放在CommonFolder内,使CommonFolder作为python包。之后,您只需在import common中将test.py设置为:-

from CommonFolder import common