【问题标题】:Why does the iMessage program throw a database error?为什么 iMessage 程序会抛出数据库错误?
【发布时间】:2020-11-11 07:12:50
【问题描述】:

我是一个初学者,我尝试过创建一个 iMessage 程序,它可以从歌曲的歌词中发送一个单词,直到它到达结尾。不幸的是,我遇到了一个我一点都不懂的错误。我已经尝试研究过这个错误,但我只看到有关实际 SQL 的帖子,而且我以前没有使用过。

它只发送一条消息,然后抛出如下错误:

Traceback (most recent call last):
  File "/Users/levs/OneDrive/python/python-projects/14/messagebot.py", line 21, in <module>
    sendMessage("+44 7871579435", getLyrics())
  File "/Users/levs/OneDrive/python/python-projects/14/messagebot.py", line 18, in sendMessage
    imessage.send(phone, message)
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/py_imessage/imessage.py", line 16, in send
    db_conn.open()
  File "/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/py_imessage/db_conn.py", line 21, in open
    db = sqlite3.connect(db_path, uri=True)
sqlite3.OperationalError: unable to open database file

这是代码:

from time import sleep
from py_imessage import imessage


def getLyrics():
    with open('lyrics.txt') as file:
        return ' '.join([str(line.strip()) for line in file])


def getWords(lyrics):
    return lyrics.split()


def sendMessage(phone, lyrics):
    for message in getWords(lyrics):
        imessage.send(phone, message)


sendMessage("+44 1122334455", getLyrics())

我将不胜感激任何形式的帮助! :)

【问题讨论】:

    标签: python python-3.x imessage


    【解决方案1】:

    我对@9​​87654321@ 包做了一些研究。它通过访问 Mac 上的 iMessages 数据库来工作。您看到的错误消息,

    sqlite3.OperationalError: unable to open database file
    

    基本上意味着您的 Mac 不允许程序访问该数据库。要解决此问题,您需要将 Mac 启动到恢复模式并运行:

    crsutil disable
    

    在终端中。这可以通过在重新启动 Mac 时按住 Command-R 来完成。启动到恢复模式后,转到 Utilites > Terminal,然后在此处运行 csrutil disable。然后你可以输入reboot 并启动回到正常的MacOS。

    【讨论】:

      猜你喜欢
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-19
      • 1970-01-01
      • 2018-12-10
      • 2019-06-13
      相关资源
      最近更新 更多