如何在python中将参数传递给os.system()语法?

时间:2011-06-13 01:56:47

标签: python

os.system('python manage.py ogrinspect  data/Parking.shp Parking --srid=4326 --mapping --multi > output.txt')

变量A =“停车”。

我怎样才能在任何地方替换os.system()有停车?

3 个答案:

答案 0 :(得分:0)

如果您只想在传递给os.system(或任何其他函数)的字符串中进行替换,则可以使用字符串插值:

>>> a = "foo"
>>> "abc %s def" % a
'abc foo def'
>>> b = "apples"
>>> "hello %s %s" % (a, b)
'hello foo apples'
>>> "hello %(c)s %(d)s %(c)s" % {'c': a, 'd': b}
'hello foo apples foo'
>>> 

你不能(像其他语言,如PHP,Ruby或TCL),使用字符串插值在当前作用域中命名任意变量;变量必须枚举,并作为元组或字典传入。

答案 1 :(得分:0)

无论何时使用字符串调用os.system,都会调用shell并获得shell扩展,无论您是否需要它。当您开始插入变量(特别是用户提供的变量)时,它可能会导致意外的安全问题。

而不是使用os.system,checkout subprocess.call()或subprocess.check_call()并传递一个元组或参数列表。当你传递一个列表或元组时,它不需要启动shell来处理参数。

通过使用列表或元组,您可以轻松地在参数中包含变量。

答案 2 :(得分:0)

或者在 Python3 中

new_text = ''
url = 'www.google.com'
if new_window:
    new_text = '--new-window'
os.system(f'google-chrome-stable {new_text} {url}')