【问题标题】:Share data extracted from one script with another script与另一个脚本共享从一个脚本中提取的数据
【发布时间】:2019-08-28 07:09:52
【问题描述】:

我正在尝试相互交流 2 个脚本。出于这个问题的目的,假设我有一个带有表格的网站,并且我有一个从表格中读取的脚本 (script1),并遍历每一行获取名称。 我的另一个脚本 (script2) 指向不同的网站,并在网络中查找特定的字符串来搜索它。

我想要的是一旦 script1 获得了一个名称,就可以与 script2 进行通信,它会在自己的网站中查找它,无论是否找到它都会返回。

我曾想过使用多处理同时启动两个脚本,但我对如何让它们进行通信有点迷茫。解决这个问题的最佳方法是什么?

【问题讨论】:

    标签: python-3.x process communication


    【解决方案1】:

    首先,我之前没有使用过多处理,所以我可能会忽略那里的某种解决方案。除此之外,还有三个想法,所有这些都可能需要对您的脚本进行一些修改。

    1. 合并脚本。 是否有可能使它们在一个程序中同时发挥作用?如果 script2 是 script1 中返回布尔值的函数怎么办?将脚本分开是您可以做出的有效设计选择,但从长远来看,它可能会让您的生活更加艰难。
    2. 使 script2 成为可导入模块。 这将允许 script1 轻松调用 script2 的函数。 Here's a guide 如何做到这一点;简而言之,如果 script1.py 和 script2.py 在同一个目录中,import script2 将起作用。然后您可以拨打script2.lookup(string_to_search) 或任何您想要的电话。
    3. 使用subprocess.run() 这将允许您从python 内部运行shell 命令并获取其输出。这是我能想到的所有解决方案中最混乱的一个,但值得在这里包括,因为它可能在其他两个选项不实用/不起作用的某些情况下起作用。您需要make script2 take command line arguments for input,然后解析从subprocess.run() 返回的输出字符串。

    【讨论】:

    • 我的问题是,如果我这样做,我需要在每次调用 script2 时初始化它的浏览器(他们使用 selenium,因为他们的网站对 js 很重),这会减慢相当多我的总执行时间。我想我可以将 browser2 保存在配置文件中,并尝试每次都访问它。但是,这会比使用套接字更快/更健壮吗?
    • 哦。我懂了。然后多次运行第二个脚本将是禁止的。您能否将第一个网页中的表格解析为列表或其他内容(该表格是静态的,对,因此您可能只需 wget 并将其作为离线文件进行搜索,或将其重新格式化为 csv),然后保持相同的browser2窗口打开并按顺序查找每个条目?另外,我想知道您是否可以手动从 script2 向搜索发送 GET 请求并完全消除完整浏览器的开销?如果回复是 json 格式会很方便。
    猜你喜欢
    • 1970-01-01
    • 2018-07-02
    • 2011-06-01
    • 2022-08-02
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    • 2011-03-04
    • 1970-01-01
    相关资源
    最近更新 更多