将参数传递给 Python 中的 subprocess.run()

Passing arguments to a subprocess.run() in Python

我正在尝试将参数传递给 bash 脚本,我正在 运行 中 Python 使用 subprocess.run()。 运行s 命令从列表中传入参数的循环。我正在使用 Twint 库,但那部分并不重要;我指出它是为了让问题更容易回答。目前,这就是我所拥有的

search_item = "bitcoin"
cmd = 'twint -s "%s" --limit 2000 --near "New York" -o file2.csv --csv' % (search_item)
p1 = subprocess.run( cmd , shell = True) % (search_item)

但是在尝试 运行 时,我得到了错误:

TypeError: unsupported operand type(s) for %: 'CompletedProcess' and 'str'

关于如何传递参数的任何帮助?提前谢谢你

subprocess.run() 行不需要 % (search_item)。您在上一行创建 cmd 时已经替换了它。

但是您的命令中没有任何内容需要使用 shell=True,因此您应该将所有参数放在列表中而不是字符串中。如果字符串包含需要转义的特殊字符,这会更有效并避免潜在的问题。

search_item = 'bitcoin'
cmd = ['twint', '-s', search_item, '--limit', '2000', '--near', 'New York', '-o', 'file2.csv', '--csv']
subprocess.run(cmd)