Они выглядят одинаково ... Документация из функции click () :
Этот метод является ярлыком для .bind ('click', обработчик)
blockquote>Документация из функции on () :
Как и в jQuery 1.7, метод .on () обеспечивает все функции, необходимые для прикрепления обработчиков событий. Для получения помощи в преобразовании из старых методов событий jQuery см. .Bind (), .delegate () и .live (). Чтобы удалить события, связанные с .on (), см. .Off ().
blockquote>
Это - то, что я использую:
def shellquote(s):
return "'" + s.replace("'", "'\\''") + "'"
оболочка будет всегда принимать заключенное в кавычки имя файла и удалять окружающие кавычки прежде, чем передать его рассматриваемой программе. В частности, это избегает проблем с именами файлов, которые содержат пробелы или любой другой вид противного метасимвола оболочки.
Обновление : при использовании Python 3.3 или позже используйте shlex.quote вместо того, чтобы прокрутить собственное.
Возможно, у Вас есть определенная причина использования os.system()
. Но если не необходимо, вероятно, использовать subprocess
модуль . Можно определить каналы непосредственно и избегать использования оболочки.
следующее от PEP324:
Replacing shell pipe line ------------------------- output=`dmesg | grep hda` ==> p1 = Popen(["dmesg"], stdout=PIPE) p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE) output = p2.communicate()[0]
Я полагаю, что os.system просто вызывает любой командный процессор, настроен для пользователя, таким образом, я не думаю, что можно сделать это независимым от платформы способом. Мой командный процессор мог быть чем-либо от удара, emacs, рубина, или даже quake3. Некоторые из этих программ не ожидают вид аргументов, Вы являетесь передающими им и даже если они сделали нет никакой гарантии, они делают свой выход из того же пути.
Если бы Вы действительно используете системную команду, я попытался бы добавить в белый список то, что входит в os.system () вызов.. Например..
clean_user_input re.sub("[^a-zA-Z]", "", user_input)
os.system("ls %s" % (clean_user_input))
модуль подпроцесса является более оптимальным вариантом, и я рекомендовал бы не использовать что-либо как os.system/subprocess по мере возможности.
shlex.quote ()
делает то, что вы хотите, начиная с python 3.
(Используйте pipe.quote
для поддержки как python 2, так и python 3)
Обратите внимание, что pipe.quote фактически нарушен в Python 2.5 и Python 3.1 и небезопасен в использовании - он не обрабатывает аргументы нулевой длины.
>>> from pipes import quote
>>> args = ['arg1', '', 'arg3']
>>> print 'mycommand %s' % (' '.join(quote(arg) for arg in args))
mycommand arg1 arg3
См. Проблема Python 7476 ; это было исправлено в Python 2.6 и 3.2 и новее.