它没有在 subprocess.call (python) 中正确获取变量

It doesn't pick up the variable correctly in subprocess.call (python)

我正在创建一个电报机器人来将我请求的信息发送到应用程序。

当我 运行 下面的代码除了最后一部分外工作正常,当它执行 subprocess.call(['robocop', '--robocop', '--cpu', '--server {f}']) 时它似乎没有输入变量“f”的正确数据,因为它为我提供了 python 代码所在的服务器的信息,但没有我请求的服务器的信息。

robocop 脚本是我在 bash

中创建的应用程序
# Check CPU Status
@bot.message_handler(commands=['cpu'])

def command_long_text(m):

    cid = m.chat.id
    f = (m.text[len("/cpu"):])
    bot.send_message(cid, "Collecting CPU information from " + f)
    bot.send_chat_action(cid, 'typing')
    time.sleep(3)
    subprocess.call(['robocop', '--robocop', '--cpu', '--server {f}'])

你能帮帮我吗?

如果我将变量更改为字符串,它会正常工作。

subprocess.call(['robocop', '--robocop', '--cpu', '--server', 'appdb'])

谢谢!

正确的版本:

cid = m.chat.id
f = (m.text[len("/cpu"):])
bot.send_message(cid, "Collecting CPU information from " + f)
bot.send_chat_action(cid, 'typing')
time.sleep(3)
subprocess.call(['robocop', '--robocop', '--cpu', f'--server {f}'])

格式化字符串文字或 f-string 是前缀为 'f' 或 'F' 的字符串文字。这些字符串可能包含替换字段,它们是由花括号 {} 分隔的表达式。虽然其他字符串文字始终具有常量值,但格式化字符串实际上是在 运行 时间计算的表达式。

另见 PEP 498