我想从子文件夹中的文件中导入函数。 文件名因之前的代码而异,这就是我获得"file"变量的原因。
我为 Windows 和 Linux 编写了不同的代码。
文件夹布局是这样的:
#ls project/
file.py subfolder
#ls project/subfolder/
subfile.py
文件.py
import os
os.chdir('subfolder')
file = 'subfile'
if os.name == 'nt': #for windows
exec('from ' + file + ' import *')
else:
exec('from subfolder.' + file + ' import *')
print(subfunction())
子文件.py
def subfunction():
return 1
这种不同的行为对我来说似乎很奇怪,因为它是 2 个不同操作系统上的相同编程语言。 有人有比这更好的代码示例,或者可以详细说明为什么会这样吗?
注意:在 Windows 上我从 Anaconda 获得了 Python 版本 3.6.5,在 Linux 上获得了 Python 3.7.4
最佳答案
正确的方法就是 Linux 方法。我不确定为什么 windows 方法适合您。
os.chdir()
不应影响 python 查找要导入的模块的路径。 python 查找它们的路径位于 sys.path
中。
参见 sys.path并阅读更多信息 BrenBarn's answer .
关于python - 从 windows 和 linux 中的子文件夹导入函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57957054/