You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用os.system执行curl触发IFTTT webhook报unexpected EOF如何解决

问题根因

你遇到的报错是两层转义规则冲突导致的:

  1. 首先Python会先解析你写的字符串,吃掉一层转义符
  2. 字符串传给os.system后,bash会再解析一次命令,而bash的单引号包裹的内容中,不支持转义单引号,你写的任何转义符在bash单引号里都会被当成普通字符处理,所以你试的两种转义写法都不生效。

最优解决方案:直接用Python发HTTP请求,绕开curl和bash转义坑

完全不需要调用系统curl命令,直接用Python的HTTP库发POST请求即可,不会有任何引号冲突问题:

import requests

# 替换为你的IFTTT密钥
IFTTT_KEY = "<my_key>"
url = f"https://maker.ifttt.com/trigger/notify_phone/with/key/{IFTTT_KEY}"
data = {
    "value1": "I'm frustrated"
}
response = requests.post(url, json=data)
# 可选打印响应结果验证
print(response.text)

如果不想安装第三方requests库,也可以用Python标准库urllib实现:

import urllib.request
import json

IFTTT_KEY = "<my_key>"
url = f"https://maker.ifttt.com/trigger/notify_phone/with/key/{IFTTT_KEY}"
data = json.dumps({"value1": "I'm frustrated"}).encode('utf-8')
req = urllib.request.Request(url, data=data, headers={'Content-Type': 'application/json'})
with urllib.request.urlopen(req) as f:
    print(f.read().decode('utf-8'))

坚持使用curl调用的正确写法

要在bash单引号里插入单引号,需要用'\''的格式(先闭合当前单引号,插入一个转义后的单引号,再重新开启单引号),对应到Python字符串里的写法如下:

import os
command = """curl -X POST -H "Content-Type: application/json" -d '{"value1":"I'\\''m frustrated"}' https://maker.ifttt.com/trigger/notify_phone/with/key/<my_key>"""
os.system(command)

这种写法可读性很差、极易出错,不推荐使用。

内容的提问来源于stack exchange,提问作者Dakota Nickel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:18:00