2015-08-17 2 views
0

Я новичок в Python, и мне нужно использовать переменную в команде os.system, вот мой код до сих порнужно использовать переменную в команде os.system в питона

import os , sys 
s = raw_input('test>') 

то я хочу использовать varable s в os.system команды, так что я думал, что-то вроде os.system("shutdown -s -t 10 -c" 's')

Я не хочу ответов на эту конкретную команду я просто хочу знать, в целом, но если вы собираетесь использовать пример использование выключай

ответ

-1
os.system("shutdown -s -t 10 -c" + s) 
  1. Знак плюс соединяет две строки
  2. Нет кавычки не используются вокруг s. Таким образом вы получите значение, введенное пользователем, а не буквальное «s».
1

то я хочу использовать varable s в os.system

Использование string.format функции.

os.system("shutdown -s -t 10 -c {}".format(s)) 
1

os.system принимает строку в качестве аргумента, так что вы можете использовать все, что изменяет строку. Например, string formatting:

os.system('shutdown -s -t 10 -c {0}'.format(s)) 
3

Вы можете использовать os.system для выполнения конкретной команды, в этом случае вы можете присоединиться две строки либо с помощью + оператора, строка форматирования (.format()), строка замены или какой-либо другой метод ,

Однако рассмотрите случай, когда пользователь вводит команду 5; rm -rf / или другую команду malicious. Вместо того чтобы использовать os.system вы можете взглянуть на subprocess

Если вы используете подпроцесс вы можете найти следующий пример под рукой:

import subprocess 
s = raw_input('test>') 
subprocess.call(["shutdown", "-s", "-t", "10", "-c", s]) 
1

Использование subprocess.check_call, передать список аргументов, и вы можете добавить переменную где бы вы хотели:

from subprocess import check_call 

check_call(["shutdown", some_var ,"-s", "-t" "10", "-c"]) 
0

Передача местоблюстителя "строка% S наряду с os.system" должен работать.

os.system() выполнит команду в оболочке.

import os 
var = raw_input('test>') # changed "s" variable to "var" to keep clean 
os.system("shutdown -%s -t 10 -c", %(var)) # "var" will be passed to %s place holder 
Смежные вопросы