【问题标题】:Why subprocess module giving weird output when calling other script in python?为什么在 python 中调用其他脚本时子进程模块会给出奇怪的输出?
【发布时间】:2020-10-22 07:59:48
【问题描述】:

我有 2 个文件

  1. a.py
  2. b.py

我正在使用 a.py 中的子进程模块来运行 b.py 的脚本,它没有给出任何错误,而是给出了奇怪的输出。

a.py 中的代码

import subprocess
h=12
res=subprocess.check_output(["python","b.py",'h'])
print(res)

b.py 中的代码

def test(h):
    h=h*12
    print(h)
    return h

我得到的输出是:

b''

【问题讨论】:

    标签: python python-3.x error-handling subprocess


    【解决方案1】:

    您的b.py 脚本需要以某种方式从sys.argv 中读取,以便对您传入subprocess.check_output([...]) 的参数执行某些操作。此外,b.py 脚本中的函数 test 并未在任何地方调用,因此您必须在某处调用它。

    此外,在subprocess.check_output 调用中,参数列表中的第三项是"h",它是一个包含单个字符的字符串文字。如果你想传递你的变量h,你应该做["python", "b.py", str(h)]。请注意,当您的b.py 脚本从sys.argv 读取它时,它仍将被解释为字符串"12",因此如果您想像h = h * 12 那样对其进行整数数学运算,则必须将其转换为整数再次。

    【讨论】:

    • 是他们在不修改 b.py 文件的情况下运行 b.py 文件的任何其他方式吗?
    • @Razeun 不,您必须修改 b.py。有什么东西阻止你这样做吗?
    • 是的,实际上我为什么要使用子进程在这里定义stackoverflow.com/questions/62665874/… 从这里你可以很容易地得出结论,我不能改变这个文件它是用户上传的文件......如果你可以为这个问题提出一些建议我已经给出了链接,那就太棒了。
    猜你喜欢
    • 2017-04-29
    • 2015-07-20
    • 2021-03-12
    • 2021-08-30
    • 1970-01-01
    • 2014-04-15
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多