2016-11-28 2 views
0

Я передаю URL-адрес в качестве первого параметра скрипту. Но он не будет принимать полный URL-адрес, если он содержит знак равенства (=). Например, если myscript.py содержит:Python 3.4 sys.argv [1]

site = sys.argv[1] 

и зову

myscript.py https://www.google.com/#q=boxing 

он останавливается перед знаком равенства и не принимает в полном URL.

site = sys.argv[1] 
print(site) 

выход:

https://www.google.com/#q= 

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

Не могли бы вы предоставить некоторые рекомендации. Благодарю.

+0

Это работает на моей машине Linux, какую ОС вы используете? Как правило, поскольку URL-адреса могут иметь мета-символы, также используемые оболочками, вам нужно что-то сделать. Что вы подразумеваете под «автоматизацией передачи параметра»? Если вы делаете это с помощью python, вы можете использовать 'subprocess.call (['myscript.py', 'https://www.google.com/#q=boxing'])'. В linux вы полностью пропускаете подоболочку, а на окнах строка ускользает для вас. – tdelaney

+0

Я использую 64-битные окна 7 и python 32-разрядную версию 3.4. Как я могу избежать знака равенства, поскольку это, по-видимому, является проблемой для большинства моих URL. – PappyC

+0

У меня нет оконной машины, поэтому я не могу проверить, но я думаю, что знак равенства подходит для cmd .... вы используете силовую оболочку? Вот подсказка http://stackoverflow.com/a/26194007/642070, но я не уверен! – tdelaney

ответ

0

Я должен был быть более конкретным, я называю свой скрипт python через пакетный файл Windows. Обозначение (=) является разделителем и принимает остальную часть URL как параметр. Я смог исправить это, поставив двойные кавычки вокруг URL-адреса. Я думал, что проблема python вызывает эту проблему, но она всегда была командной строкой Windows.

 Смежные вопросы

  • Нет связанных вопросов^_^