os.system('python manage.py ogrinspect data/Parking.shp Parking --srid=4326 --mapping --multi > output.txt')
变量A =“停车”。
我怎样才能在任何地方替换os.system()有停车?
答案 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}')