我敢肯定这很简单,但是我一直无法使其正常工作。我需要让我的主要python脚本调用另一个python脚本,并将变量从原始脚本传递到我已调用的脚本
举一个简单的例子,我的第一个脚本是
first.py
x = 5
import second
我的第二个脚本是
second.py
print x
我希望它可以打印x但我得到
NameError: name 'x' is not defined
我不确定导入是否是实现此目标的正确方法,但是如果有人可以通过简单的方式对此有所了解,那就太好了!
谢谢,
编辑
阅读评论后,我想我会扩展我的问题。Aswin
Murugesh的答案解决了我遇到的导入问题,但是该解决方案没有理想的结果,因为我似乎无法以这种方式传递列表中的项目。
在first.py中,我有一个列表,其处理如下
for insert, (list) in enumerate(list, start =1):
'call second.py passing current list item'
我想将列表中的每个项目传递到另一个python文件进行进一步处理(网络抓取),我不想在first.py中执行此操作,因为这是要成为主要的“扫描”程序,然后再调用其他程序程式。我希望这现在更有意义。
感谢您到目前为止的评论。
调用脚本时,调用脚本可以访问被调用脚本的名称空间。(在您的情况下, first 可以访问 second
的名称空间。)但是,您要的是相反的方法。您的变量在调用脚本中定义,并且您希望被调用脚本访问调用者的名称空间。
但是,我将在这里根据您的情况进行解释。
要获得所需的内容,请使用以下行开始调用脚本:
from __main__ import *
这使它可以访问调用者脚本的名称空间(所有变量和函数)。
所以现在您的调用脚本与以前一样:
x=5
import second
调用的脚本是:
from __main__ import *
print x
这应该工作正常。
问题内容: 我花了过去的几个小时在这里和其他地方进行阅读和实验,但是我并没有真正理解我确信这是一个非常基本的概念:在不同的函数之间传递值(作为变量)。 例如,我将一堆值分配给一个函数中的列表,然后想稍后在另一个函数中使用该列表: 基于对函数参数的作用的理解,我希望这样做如下: 将“列表”初始化为空列表;打电话给main(至少,我知道我没事…) 在defineAList()中,将某些值分配给列表;然
我们一直在试图找出如何从groovy脚本调用,(0),(1)selenium网站登录,然后调用另一个测试用例中的导航(脚本)部分。两种方法都能100%独立运行。下面是我用来从(0)调用这两个脚本的代码,但一旦登录完成。运行,将使用选择打开一个新浏览器。运行,测试显然会失败,因为它没有登录。 因此,我去操作了登录、选择(通过删除webdriver代码),主脚本代码现在看起来是这样的(我已经在粘贴中排
好吧,所以这是已经问过的问题,但答案似乎没有多大帮助。我能够使用jython和该问题中发布的答案运行python脚本,但我无法传递变量...当我运行程序时,错误说没有像arg1 arg2和arg3这样的变量...我做错了什么? 这是python脚本 现在错误说arg1 arg2和arg3未声明
问题内容: 我有一个bash脚本a.sh,其中有一个python脚本b.py。python脚本计算某些内容,我希望它返回一个值,该值稍后将在a.sh中使用。我知道我能做 在a.sh中: 在b.py中: 但这不是那么方便,因为我还在b.py中打印了其他消息 有什么更好的方法吗? 编辑: 我现在正在做的只是 这意味着我可以在b.py中打印很多东西,但是只有最后一行(假设它不包含“ \ n”,这是最后一
问题内容: 假设我有以下情况; 在重新标记的页面中,有一个链接将页面/ a定向到/ b。我尝试将变量a传递给页面/ b以重用它。我该怎么做这个Flask应用程序?我需要使用会话还是有其他解决方案? 问题答案: 如果要传递一些不需要用户查看或控制的python值,则可以使用会话: 会话的行为就像字典,并序列化为JSON。因此,你可以将可序列化JSON的任何内容放入会话中。但是,请注意,大多数浏览器不
问题内容: 我在jenkins有两个工作,这两个工作都需要相同的参数。 如何使用参数运行第一个作业,以便在触发第二个作业时使用相同的参数? 问题答案: 您可以使用参数化触发器插件,该插件可让您将参数从一个任务传递到另一任务。 您还需要在上游添加从上游传递的此参数。