在带有 os.system 的 bash 命令中使用 Python 变量

Use Python variable in bash command with os.system

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

import os

Phonenumber = raw_input("Number?)

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

使用:

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

如果您想坚持使用 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,其中的元素是您调用的所有 space 分隔段:

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

您可以在 subprocess here.

上查看更多内容

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

import subprocess

phone_number = raw_input("Number?")

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