Чтение строковых аргументов, переданных из командного файла в скрипт Python - PullRequest
0 голосов
/ 08 марта 2019

Я видел несколько сообщений о передаче строки, но не смог найти хорошего решения при чтении строки, переданной скрипту Python из пакетного файла. Вот моя проблема.

Я вызываю скрипт Python из командного файла и передаю аргумент.

string_var = "123_Asdf"

bat 'testscript.py  %string_var%'

У меня есть следующий код в моем питоне.

import sys

passed_var = sys.argv[1]

Когда я запускаю приведенный выше код, я всегда вижу ошибку ниже.

passed_var = sys.argv[1]
IndexError: list index out of range

Кто-нибудь видел эту проблему раньше? Я передаю только строку и ожидаю, что она будет прочитана как часть первого аргумента, который я передаю скрипту.

Ответы [ 3 ]

0 голосов
/ 08 марта 2019

Если я правильно прочитал ваш вопрос и его форматирование, я думаю, что ваш .bat файл должен читать:

Set string_var="123_Asdf"
"D:\BuildTools\tools\python27\python.exe" testscript.py %string_var%

Или еще лучше:

Set "string_var=123_Asdf"
"D:\BuildTools\tools\python27\python.exe" testscript.py "%string_var%"

Где %string_var%может быть передан с или без заключенных в него двойных кавычек.

0 голосов
/ 08 марта 2019

Ваш пакетный файл должен быть немного проще, убедитесь, что у вас правильно установлен PATH, иначе это не будет работать.

python testscript.py [argument]
0 голосов
/ 08 марта 2019

Попробуйте это:

import sys
for x,parameter in enumerate(sys.argv):
    print(x, parameter)
...