【问题标题】:Use Python variable in bash command with os.system在 bash 命令中使用 Python 变量和 os.system
【发布时间】:2015-07-02 06:26:29
【问题描述】:

我想用raw_input 输入一个电话号码,并在我的 bash 命令中使用这个变量来发送消息。我不知道如何设置变量 $Phonenumber。没有 RAW 输入,它就像一个魅力。我使用 Python 2.7。

import os

Phonenumber = raw_input("Number?)

os.system("yowsup-cli demos --login PHONE:PASSWORD= --send '$Phonenumber' 'MESSAGE'")

【问题讨论】:

    标签: python macos bash variables os.system


    【解决方案1】:

    使用:

    os.system("yowsup-cli demos --login PHONE:PASSWORD= --send '%d' 'MESSAGE'" % Phonenumber)
    

    【讨论】:

    • 杰克的方法奏效了。但是使用您的解决方案,我收到一个错误(无论如何谢谢): Traceback(最近一次调用最后一次):文件“”,第 1 行,在 类型错误:%d 格式:需要一个数字,而不是 str跨度>
    • %d 替换为%s
    【解决方案2】:

    如果您想坚持使用os.system 拨打电话,您只需格式化您传递给它的命令:

    import os
    phone_number = raw_input("Number?")
    os.system("yowsup-cli demos --login PHONE:PASSWORD= --send '{0}' 'MESSAGE'".format(phone_number))
    


    然而,切普纳在他的回答中提出了一个很好的观点。你真的应该使用subprocess 模块来处理这样的事情,因为它更像是flexible tool。要使用subprocess 获得相同的行为,只需将一个列表传递给subprocess.call,其中元素是您调用的所有空格分隔段:

    import subprocess
    phone_number = raw_input("Number?")
    subprocess.call(["yowsup-cli", "demos", "--login" "PHONE:PASSWORD=", "--send", phone_number, "MESSAGE"])
    

    您可以在subprocess here 上查看更多信息。

    【讨论】:

      【解决方案3】:

      请改用subprocess;除其他功能外,它还使引用变得更加容易。

      import subprocess
      
      phone_number = raw_input("Number?")
      
      subprocess.call(["yowsup-cli", "demos", "--login", "PHONE:PASSWORD=",
                       "--send", phone_number, "MESSAGE"])
      

      【讨论】:

      • subprocess 是更好的方法 - 并替换了 popen(已弃用)++
      猜你喜欢
      • 1970-01-01
      • 2018-05-24
      • 2023-04-08
      • 2022-10-05
      • 1970-01-01
      • 2012-03-02
      • 2013-12-01
      • 2014-06-27
      • 1970-01-01
      相关资源
      最近更新 更多