Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将python数据传递回调用脚本,当被调用脚本关闭时,浏览器窗口保持打开状态_Python_Json_Selenium_Pickle - Fatal编程技术网

如何将python数据传递回调用脚本,当被调用脚本关闭时,浏览器窗口保持打开状态

如何将python数据传递回调用脚本,当被调用脚本关闭时,浏览器窗口保持打开状态,python,json,selenium,pickle,Python,Json,Selenium,Pickle,我试图找到将数据从python script2.py传递回调用脚本(script1.py)的最佳方法。我正在Linux上使用Python 3 Script1调用script2.py,然后使用Selenium打开浏览器窗口并执行一些操作。脚本2结束时,浏览器保持打开状态,脚本1继续。我想要的是能够在script2中从script1中打开的浏览器窗口上工作 到目前为止,我还没有找到合适的方法将有关打开的浏览器窗口的信息从script2传递回script1。我相信问题的一部分是因为当调用script2

我试图找到将数据从python script2.py传递回调用脚本(script1.py)的最佳方法。我正在Linux上使用Python 3

Script1调用script2.py,然后使用Selenium打开浏览器窗口并执行一些操作。脚本2结束时,浏览器保持打开状态,脚本1继续。我想要的是能够在script2中从script1中打开的浏览器窗口上工作

到目前为止,我还没有找到合适的方法将有关打开的浏览器窗口的信息从script2传递回script1。我相信问题的一部分是因为当调用script2时,script1会等待它关闭后再继续,因此无法获取script2中打开的变量。我也不想改变这方面

在script1.py中,以下代码如下调用script2:

cmd = ['python3', '/home/admin/Desktop/Python_stuff/live-scripts/script2.py']
        subprocess.Popen(cmd).wait() # Python will now wait for script to end before continuing
在script2中,以下代码最初打开浏览器(在script2关闭后,浏览器当前保持打开状态),如下所示:

driver.get(targetURL)

我已经看过Pickle,但无法让它按照我想要的方式工作,接下来可能会尝试使用importjson。但是我想知道我是否错过了一个更简单的方法来实现我在这里想要的。

感谢评论中的pguardiario让我走上了正确的道路。答案是使用script2作为一个模块

实际上我已经尝试过这样做了,但是它破坏了我的脚本1,因为我在脚本的命名中有破折号,当它们是脚本时,破折号可以正常工作,但是由于某些原因,当它们用作模块时,它不起作用,而且也不会给您带来任何错误。它完全脱离了脚本(在我的linux/Python3设置中就是这样)

一旦我解决了文件命名问题,解决方案就出人意料地简单了

在script1.py中,我现在有了

import script2
然后我从第二个脚本调用main()函数

script2.main
我不必对script2进行任何更改,它从本地文件夹运行,因此不需要额外的路径设置,现在我也可以删除所有脚本调用代码


主要的一点是不要在模块命名中使用破折号,因为它不会给您错误警告,但不会导入它们。

感谢评论中的pguardiario将我设置在正确的轨道上。答案是使用script2作为一个模块

实际上我已经尝试过这样做了,但是它破坏了我的脚本1,因为我在脚本的命名中有破折号,当它们是脚本时,破折号可以正常工作,但是由于某些原因,当它们用作模块时,它不起作用,而且也不会给您带来任何错误。它完全脱离了脚本(在我的linux/Python3设置中就是这样)

一旦我解决了文件命名问题,解决方案就出人意料地简单了

在script1.py中,我现在有了

import script2
然后我从第二个脚本调用main()函数

script2.main
我不必对script2进行任何更改,它从本地文件夹运行,因此不需要额外的路径设置,现在我也可以删除所有脚本调用代码


要点是不要在模块命名中使用破折号,因为它不会给出错误警告,但不会导入它们。

更简单的方法是在主脚本中使用selenium。这里的子流程有什么意义?@pguardiario我认为合并脚本可能是解决这个问题的最好方法,但它需要重新设计整个流程,只是为了传递一个变量。不管怎样,我认为学习如何在脚本之间实现这种简单的数据传输的原则对我来说很重要,以防将来的项目需要它。学习如何制作一个模块更有用,使用子流程进行这种糟糕的设计。你确定吗?如果script2需要保持独立并由script1调用,该怎么办。或script3,或许多其他脚本。也许这就是你们所说的模块,但你们能解释一下吗。我正在学习python,不是python方面的专家。这里的内容太多了,但是你应该寻找一些教程。更简单的是在主脚本中使用selenium。这里的子流程有什么意义?@pguardiario我认为合并脚本可能是解决这个问题的最好方法,但它需要重新设计整个流程,只是为了传递一个变量。不管怎样,我认为学习如何在脚本之间实现这种简单的数据传输的原则对我来说很重要,以防将来的项目需要它。学习如何制作一个模块更有用,使用子流程进行这种糟糕的设计。你确定吗?如果script2需要保持独立并由script1调用,该怎么办。或script3,或许多其他脚本。也许这就是你们所说的模块,但你们能解释一下吗。我正在学习python,不是python方面的专家。这里的内容太多了,但你应该找一些教程。