如何从不同目录中的不同文件中获取变量到一个Python文件中

32 阅读2分钟

在一个Python项目中,您需要从一个不同目录中的不同文件中获取大量变量,而不想简单地复制粘贴,因为这样做不仅效率低下,而且需要编辑所有使用该变量集的文件。

假设您有一个名为memId.py的文件,其中包含大量变量,如下所示:

D:/Tiller OS/garden/memId.py:
mem11 = "D:/Tiller OS/memory/mem1/mem1-1.mem"
mem12 = "D:/Tiller OS/memory/mem1/mem1-2.mem"
mem13 = "D:/Tiller OS/memory/mem1/mem1-3.mem"
mem21 = "D:/Tiller OS/memory/mem2/mem2-1.mem"
mem22 = "D:/Tiller OS/memory/mem2/mem2-2.mem"
mem23 = "D:/Tiller OS/memory/mem2/mem2-3.mem"
mem31 = "D:/Tiller OS/memory/mem3/mem3-1.mem"
mem32 = "D:/Tiller OS/memory/mem3/mem3-2.mem"
mem33 = "D:/Tiller OS/memory/mem3/mem3-3.mem"
memro1 = "D:/Tiller OS/memory/romem/memro-1.mem"
memro2 = "D:/Tiller OS/memory/romem/memro-2.mem"
memro3 = "D:/Tiller OS/memory/romem/memro-3.mem"

您需要将这些变量从memId.py文件中获取到另一个名为prog.py的Python文件中,而不需要复制粘贴。

2、解决方案

方法一:使用from导入

如果您已经将memId.py文件所在的目录添加到系统的搜索路径中,或者将memId.py文件放在了prog.py文件所在的目录中,那么您可以使用from导入语句来导入memId.py文件中的变量,如下所示:

D:/Tiller OS/programs/prog.py:
from memId import mem11, mem12, mem13, mem21, mem22, mem23, mem31, mem32, mem33, memro1, memro2, memro3

这样,您就可以在prog.py文件中使用这些变量了。

方法二:使用toml或json文件

如果您不想将memId.py文件放在prog.py文件所在的目录中,或者不想将memId.py文件所在的目录添加到系统的搜索路径中,那么您可以使用toml或json文件来存储这些变量。

假设您将memId.py文件中的变量存储在一个名为memId.toml的toml文件中,如下所示:

[memory]
mem11 = "D:/Tiller OS/memory/mem1/mem1-1.mem"
mem12 = "D:/Tiller OS/memory/mem1/mem1-2.mem"
mem13 = "D:/Tiller OS/memory/mem1/mem1-3.mem"
mem21 = "D:/Tiller OS/memory/mem2/mem2-1.mem"
mem22 = "D:/Tiller OS/memory/mem2/mem2-2.mem"
mem23 = "D:/Tiller OS/memory/mem2/mem2-3.mem"
mem31 = "D:/Tiller OS/memory/mem3/mem3-1.mem"
mem32 = "D:/Tiller OS/memory/mem3/mem3-2.mem"
mem33 = "D:/Tiller OS/memory/mem3/mem3-3.mem"
memro1 = "D:/Tiller OS/memory/romem/memro-1.mem"
memro2 = "D:/Tiller OS/memory/romem/memro-2.mem"
memro3 = "D:/Tiller OS/memory/romem/memro-3.mem"

然后,您可以在prog.py文件中使用toml或json库来读取memId.toml文件中的变量,如下所示:

import toml

D:/Tiller OS/programs/prog.py:
mem_path = "D:/Tiller OS/garden/memId.toml"
mems = toml.load(mem_path)

mem11 = mems["memory"]["mem11"]
mem12 = mems["memory"]["mem12"]
mem13 = mems["memory"]["mem13"]
mem21 = mems["memory"]["mem21"]
mem22 = mems["memory"]["mem22"]
mem23 = mems["memory"]["mem23"]
mem31 = mems["memory"]["mem31"]
mem32 = mems["memory"]["mem32"]
mem33 = mems["memory"]["mem33"]
memro1 = mems["memory"]["memro1"]
memro2 = mems["memory"]["memro2"]
memro3 = mems["memory"]["memro3"]

这样,您就可以在prog.py文件中使用这些变量了。