将变量从一个文件导入另一个文件

Posted

技术标签:

【中文标题】将变量从一个文件导入另一个文件【英文标题】:Import Variables From One File Into Another 【发布时间】:2021-06-22 16:12:28 【问题描述】:

我正在尝试将多个变量从一个文件导入另一个文件,而不是两次运行第一个文件。具体来说,我有一个名为“run_all_files.py”的脚本,它循环遍历本地目录中的文件以按顺序运行,这就是我要执行相关文件的脚本。在文件“file_1.py”中,我想将import变量AB放入“file_2.py”,但我不想让“file_1.py”重新运行。

我也尝试调用if __name__=='__main__': 函数,但无法自行将变量AB 获取到import,并且“file_1.py”仍然运行两次。 “file_1.py”和“file_2.py”都位于列出的path中,并在运行“run_all_files.py”时执行。

“run_all_files.py”

import os
path = "C:\\users\\mdl518\\Desktop\\"
def run_the_files():

    file_list = ['file_1.py', 'file_2.py']
    for filename in file_list:
        os.system('python' + ' ' + os.path.join(path,filename))

run_the_files()

“file_1.py”

import os
def run_first_file():

    global A, B
    A = 'Hello'
    B = 'User'
    C = 'Python Programmer'
    print("This is the first file to run")

run_first_file()

“file_2.py”

import os
from file_1 import A,B

def run_second_file():

    print('Welcome, and ', A + ' ' + B) 
    print("This second program runs smoothly")

run_second_file()

当前输出:

This is the first file to run
This is the first file to run
Welcome, and  Hello User
This second program runs smoothly

期望的输出:

This is the first file to run
Welcome, and  Hello User
This second program runs smoothly

** 更新:将 "run_all_files.py" 中的 file_list 更改为 file_list = ['file_2.py'] 以实现所需的输出**

【问题讨论】:

变量AB 是“file_1.py”中run_first_file() 函数的本地——换句话说,它们不是模块级变量. martineau - 仍然可以将这些变量导入 file_2.py 吗?根据我的阅读,我仍然应该能够从 file_1.py 导入它们,但是您对这些变量是 file_1.py 的本地变量是正确的。还有办法调用“if__name__=='main' 或通过类导入变量吗?再次感谢! 我不相信有任何方法可以import 函数的局部变量。 您问题中的代码有几个与您所问的内容无关的拼写错误,并且无法运行。 如果您在“file_1.py”脚本中的 run_first_file() 函数的开头声明变量 global A, B,则可以 import 变量(在修复其他语法错误和印刷错误之后)您发布的代码)。这将防止它们成为局部变量。 【参考方案1】:

一种可能性是,如果你通过一个类,绝对不是优雅的,但有效。

“file_1.py”

from var import sol
class v(object):
    sol = 'Hello'

“file_2.py”

from var import v
print(v.sol)

【讨论】:

以上是关于将变量从一个文件导入另一个文件的主要内容,如果未能解决你的问题,请参考以下文章

从另一个文件导入变量?

无法从不同的文件定义导入的对象,将其存储在一个状态中并将其传播到 React 中的另一个变量中

将文件导入另一个文件时,CSS变量未解析

我想从另一个 python 文件中导入一个变量(Django)

导入另一个文件时,Apollo 反应变量不起作用!为啥?

将Python导入函数从另一个目录导入文件,然后从另一个目录导入另一个函数