var today = new Date();
var formattedToday = today.toLocaleDateString() + ' ' + today.toLocaleTimeString();
, тогда я хочу использовать переменную s в os.system
blockquote>Использовать функцию
string.format
.os.system("shutdown -s -t 10 -c {}".format(s))
os.system("shutdown -s -t 10 -c" + s)
s
не используются кавычки. Таким образом вы получите значение, введенное пользователем, а не буквальное «s». Вы можете использовать os.system
для выполнения конкретной команды, и в этом случае вы можете присоединиться к двум строкам либо с помощью оператора +
, форматирования строки (.format()
), либо замены строки, либо какого-либо другого метода.
Однако рассмотрите случай, когда пользователь вводит команду 5; rm -rf /
или какую-либо другую вредоносную команду. Вместо использования os.system
вы можете взглянуть на подпроцесс
. Если вы используете подпроцесс, вы можете найти следующий пример:
import subprocess
s = raw_input('test>')
subprocess.call(["shutdown", "-s", "-t", "10", "-c", s])
Используйте subprocess.check_call , передайте список аргументов, и вы можете добавить переменную где угодно:
from subprocess import check_call
check_call(["shutdown", some_var ,"-s", "-t" "10", "-c"])
os.system
принимает в качестве аргумента строку , поэтому вы можете использовать все, что изменяет строку. Например, форматирование строки :
os.system('shutdown -s -t 10 -c {0}'.format(s))
Пропускающий держатель «% 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