簡體   English   中英

它沒有在 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM