【问题标题】:How can I make one python file ask for user input and then pass this input to a second .py file?如何让一个 python 文件要求用户输入,然后将此输入传递给第二个 .py 文件?
【发布时间】:2020-04-15 12:25:03
【问题描述】:

我有一个执行三个步骤的 analyze.py 文件:

  1. 它将 .csv 文件作为 numpy 数组导入;
  2. 它要求用户输入 (例如x=input ('Enter a number by which you want to multiply your array?')
  3. 使用该输入来执行一些数组操作 (例如output_array=csv_array*x)。

在第 3 步之后,我想关闭现有窗口并自动运行第二个 .py 文件,该文件会导入新数组 (output_array)。

换句话说,我想将用户输入变量从一个 py 文件传递​​到另一个。我该怎么做?

请注意,我知道类似的问题(例如How can I make one python file run another?),但我无法猜测如何处理用户输入。

【问题讨论】:

  • 是否有可能将用户输出存储在配置文件中?这就是我建立一个类似项目的方式。第二个脚本从此文件中提取必要的信息。
  • 您好,欢迎来到 SO。请花时间阅读How to Ask 部分,以了解如何发布一个好的问题,以便社区可以为您提供帮助。请编辑您的帖子并添加minimal, reproducible example 以及您可能遇到的任何错误或日志。

标签: python numpy import python-import


【解决方案1】:

有几种方法可以解决这个问题。

  • 使用脚本参数
  • 写入文件和读取同一个文件
  • 使用消息队列和工作线程(复杂得多)

我建议您使用第一种方法并为第二个脚本使用参数。您可以这样称呼您的脚本:python script2.py arg1 arg2 并在 script2 中使用 argsv 来读取相关参数。

$ python script2.py arg1 arg2

>>> import sys
>>> len(sys.argv) # 3

【讨论】:

    【解决方案2】:

    一种方法是使用subprocess.run 执行第二个python 文件。这样,您可以将输入数组作为参数传递给第二个 python 文件。

    from subrocess import run
    command = []
    command.append(PYTHON_EXECUTABLE_PATH)
    command.append(SECOND_FILE_PATH)
    command.append(array_converted_to_string) # e.g. separate array elements with dashes '-'
    completed_process = run(command, capture_output=True, text=True) 
    

    所以你要实现三件事:

    • 将数组转换为字符串的函数
    • 执行转换的函数
    • 第二个 python 文件中的参数解析 # 标准库中包含 argparse 模块

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-29
      • 2021-03-18
      • 2017-06-02
      • 1970-01-01
      • 1970-01-01
      • 2018-01-04
      • 2013-12-03
      • 2013-08-13
      相关资源
      最近更新 更多