我具有以下目录结构:
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')
我的问题:
FullPath/TestFolder/../CommonFolder
而不是FullPath/CommonFolder
。运行时对此有影响吗?我想每个import
语句的执行速度可能会稍微慢一些,但是即使这样,这也是很小的。有没有充分的理由不这样做呢?谢谢!
答案 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