如何从另一个文件导入输入变量而不重复运行此输入函数?

2024-04-20 10:28:02 发布

您现在位置:Python中文网/ 问答频道 /正文

My master.py要求输入参与者名称,然后运行使用此名称的其他.py文件:

master.py

participant = str(input("Participant's name: "))

if __name__ == "__main__":
    import os, subprocess
    cDir = os.path.dirname(os.path.realpath(__file__))
    files = ['antisaccade','change_detection','digit_span']
    for f in files:
        wDir = cDir+ '/' + f
        subprocess.run(["python", f+'.py'], cwd=wDir)

例如,数字\u span.py

sys.path.append(os.path.abspath('../'))
from master import participant
filename = u'data/%s_%s_%s' % participant

因此,每次运行文件时,它们都会使用输入循环调用line:

participant = str(input("Participant's name: "))

但我只需要询问参与者的姓名一次,然后将其发送到其他文件

如果我把input()放在if里面,我得到

ImportError: cannot import name 'participant'

有人能解释一下怎么解决这个问题吗


1条回答
网友
1楼 · 发布于 2024-04-20 10:28:02

如果master.py询问名称并运行列表中的脚本.py,您可以做的是将名称作为参数传递

就这样,

master.py

participant = list([str(input("Participant's name: "))])
if __name__ == "__main__":
    import os, subprocess
    cDir = os.path.dirname(os.path.realpath(__file__))
    files = ['slave']
    for f in files:
        wDir = cDir+ '/' + f
        subprocess.Popen(["python", "{0}.py".format(wDir)]+participant)

从.py

import sys

with open("check.txt".format(sys.argv[1]),'w') as f:
    f.write("{0} participant".format(sys.argv[1]))

master.py将与参数一起运行slave.py

为了测试结果,它将生成一个包含参与者名称的文件check.txt,这意味着master.py正在将名称传递给(slave.py)脚本

相关问题 更多 >