【问题标题】:How to pass python commands after opening a python console from a python script?从 python 脚本打开 python 控制台后如何传递 python 命令?
【发布时间】:2021-05-12 11:26:23
【问题描述】:

我需要从 python 脚本打开一个 python 控制台,然后将命令传递给该 python 控制台。

我需要自动化这个过程。目前我正在使用 os.system 和 subprocess 打开 python 控制台,但之后我完全坚持将print("Test") 传递给 python 控制台。

这是我正在处理的示例代码。

import os
os.system("python")
#os.system("print('Hello World'))

# or 

import subprocess
subprocess.run("python", shell = True)

请帮助我了解如何传递嵌套命令。 谢谢

【问题讨论】:

  • 为什么需要启动交互式控制台并以自动方式键入命令,而不是只执行 Python 脚本?
  • 这样我可以使用另一个shell,比如vivado,它可以自动运行TCL脚本。就像从 python 中打开 vivado shell,然后将 TCL 命令传递给 vivado shell 执行。
  • 所以您想启动另一个 Python 会话并向其发送命令以启动 Vivado,然后向其发送命令?为什么不直接启动 Vivado?
  • 为什么要编写 Python 脚本来发送 Tcl 命令而不是编写 Tcl 脚本?
  • 我必须执行 100 多个文件,而手动执行会很麻烦,所以只是想检查一下这种自动化的可能性。在这种情况下,我会从 python 脚本打开 vivado 控制台并仅通过 python 传递 TCL 命令。

标签: python windows nested subprocess os.system


【解决方案1】:

我从另一个线程中找到了一个非常有用的答案并应用于我的用例。

from subprocess import run, PIPE

p = run(['python'], stdout=PIPE,
        input='print("Test")\nprint("Test1")\nimport os\nprint(os.getcwd())', encoding='ascii')
print(p.returncode)
# -> 0
print(p.stdout)

它启动python shell,然后执行以下由\n分隔的命令。

  1. 打印测试
  2. 打印Test1
  3. 导入操作系统
  4. 获取当前工作目录。

参考: How do I pass a string into subprocess.Popen (using the stdin argument)?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 2022-06-18
    • 2022-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多