4

I would like to enter an phone number with raw_input and use this variable in my bash command for sending a message. I don't know how to set the variable $Phonenumber. Without the RAW Input, it works like a charm. I use Python 2.7.

import os

Phonenumber = raw_input("Number?)

os.system("yowsup-cli demos --login PHONE:PASSWORD= --send '$Phonenumber' 'MESSAGE'")
ODiogoSilva
  • 2,394
  • 1
  • 19
  • 20
Jesse kraal
  • 323
  • 4
  • 11

3 Answers3

6

If you want to stick with using os.system to make your calls, you can just format the command you pass to it:

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


However, chepner brings up a good point in his answer. You should really be using the subprocess module for things like this, as it is a much more flexible tool. To get the same behavior using subprocess, just pass a list to subprocess.call with the elements being all the space separated segments of your call:

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

You can check out more on subprocess here.

Community
  • 1
  • 1
neatnick
  • 1,489
  • 1
  • 18
  • 29
5

Use subprocess instead; among other features, it makes quoting much easier.

import subprocess

phone_number = raw_input("Number?")

subprocess.call(["yowsup-cli", "demos", "--login", "PHONE:PASSWORD=",
                 "--send", phone_number, "MESSAGE"])
chepner
  • 497,756
  • 71
  • 530
  • 681
1

use:

os.system("yowsup-cli demos --login PHONE:PASSWORD= --send '%d' 'MESSAGE'" % Phonenumber)
Diego Torres Milano
  • 65,697
  • 9
  • 111
  • 134
  • The method of Jake works. But with your solution I get an error (Thanks anyway): Traceback (most recent call last): File "", line 1, in TypeError: %d format: a number is required, not str – Jesse kraal Apr 23 '15 at 21:15
  • Replace the `%d` with `%s` – cdarke Apr 23 '15 at 22:29