这是后堆栈溢出的后续操作
如何在Google Colab终端命令中使用Python变量?
它询问如何将python变量发送到命令行。
答案是你需要在它前面放一个$。在其他情况下,你需要引用所有类似"$variable"的内容
除curl命令外,这对我有效。例如
emailBody1 = ' this is some test text'
!curl -X POST 'http://localhost.yxy' -H "Content-Type: application/json" -d '{"emails": [{"emailBody": '$emailBody1'}}'
我尝试了无引号、单引号和双引号。没有引号会导致错误,单引号/双引号只是将里面的内容作为字符串发送;没有引用变量。
这适用于我的
-d '{{"emails": [{{"emailBody": "$emailBody1" }}]}}'
或
-d '{{"emails": [{{"emailBody": "{emailBody1}" }}]}}'
所有字符串都在' '
(或" "
(内,不拆分为'string' $var 'string'
正常的{ }
必须转换为{{ }}
,因为它使用{ }
来放入变量中的值。
我用http://httpbin.org/post它会发回所有数据,这样我就可以看到发送了什么。
emailBody1 = ' this is some test text'
!curl -X POST 'http://httpbin.org/post' -H "Content-Type: application/json" -d '{{"emails": [{{"emailBody": "{emailBody1}" }}]}}'
如果您真的坚持使用curl
,请使用subprocess
显式运行副本,这样您就不会依赖Jupyter来实现魔术。
import subprocess, json
emailBody1 = ' this is some test text'
subprocess.run([
'curl',
'-X', 'POST',
'-H', 'Content-Type: application/json',
'-d', json.dumps({"emails": [{"emailBody": emailBody1}]}),
'http://localhost.yxy',
])
这还具有使用Python的json.dumps()
生成JSON文本的优势,在其他方法(f/e,如果您的电子邮件文本包含换行符、文本双引号或其他特殊字符(的许多情况下,JSON文本不会崩溃。