繁体   English   中英

无法在python中将变量从一个脚本导入到另一个脚本

[英]Cant import variable from one script to another in python

我有两个python脚本

emotion.py

if __name__ == '__main__':

    user=raw_input("Enter your name\n")     

    print("Calling open smile functions.....")

    subprocess.Popen("correlationSvg.py", shell=True)

correlationSvg.py

from emotion import user
import os
import csv

with open('csv/test/'+user+'.csv') as f:
  reader = csv.DictReader(f, delimiter=';')
  rows = list(reader)

我遇到错误

ImportError:无法导入名称用户

为什么会这样呢?

变量user是在if __name__ == '__main__'块中定义的。 当执行import语句时,不会执行这一操作。

您当然可以定义一个(脚本)全局变量

user = ""
if __name__ == '__main__':

    user=raw_input("Enter your name\n")     

    print("Calling open smile functions.....")

    subprocess.Popen("correlationSvg.py", shell=True)

如果您想在执行时吸引用户,我要么把

user=raw_input("Enter your name\n")

进入correlation.py或:

in  sympathy.py:

def get_user():
    user=raw_input("Enter your name\n") 

并从correlation.py访问此函数。 只需记住: import语句在您调用解释器时发生,而用户分配在运行时发生。

因为您正在使用if __name__ == '__main__' 如果文件是从另一个模块导入的, __name__设置为模块的名称。 这意味着,仅当您运行emotion.py才会处理该缩进中的代码。

有关__name__详细说明,您可以在这里看。

您可以尝试这样做,以强制user成为全局user

user = ''
if __name__ == '__main__':
    user=raw_input("Enter your name\n")     

但是...您应该真正考虑您在这里做什么。 如果您不希望设置user除非这是主模块),那么从另一个模块导入用户时会发生什么?

可能您应该将此作为参数传递给函数,而不要尝试将其导入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM