2013-10-09 2 views
1

test1.py - это главный скрипт, вызывающий другой скрипт test2.py, передавая тот же список аргументов, который был передан test1.py. Я сделал следующее, но он читает список sys.argv в виде строки и разобрать на несколько аргументов, а также включает в себя ненужными [и,Вызов сценария Python из другого и передача List (sys.argv) в качестве аргумента

test1.py 
import os 
import sys 

argList=sys.argv[1:] 

os.system('python another/location/test2.py %s'%(argList)) 

test2.py 

import sys 
print(sys.argv[1:]) 

Call test1.py 
python test1.py -a -b -c 
output: ['[-a,' ,'-b,', '-c]' ] 

Пожалуйста, пост, если есть лучше opti

+0

Когда вы выполняете форматирование строки, что преобразовывается в 'argList'? Это не совсем то, что вы ожидаете. Вы хотите каким-то образом форматировать 'argList' самостоятельно ... загляните в метод' join' строки. –

ответ

1

Использование

os.system('python another/location/test2.py %s' % ' '.join(argList)) 

Если аргументы не содержат пробелов.

Вторая программа будет выводить

['-a', '-b', '-c'] 

Если ваши аргументы могут содержать пробелы, было бы лучше, чтобы их цитировать. Использовать ' '.join("'%s'" % arg.replace("'", "\\'") for arg in ArgList)

+0

Благодарим вас за использование join()? добавит ли он весь элемент списка с разделителем '' (пробел)? – creativeDrive

+0

Действительно. 'string.join (list)' будет делать 'list [0] + string + list [1] + ...' (но это лучше). – Noctua

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