TypeError:需要一个byteslike对象,而不是“str”Python 3下载长文件

2024-06-27 02:15:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Python3下载一个BLOB格式的文件,这个文件对于一个数据库来说非常“沉重”。有人可以帮助我编写代码:

fout = open('D:\files.zip','wb')
def readBLOB ():
   try:
        conn = mysql.connector.connect(host='(IP)',user='(user)', passwd='(password)', db='(Database)', port=PORT)
        cursor = conn.cursor()
        sql_fetch_blob_query = "SELECT archivo FROM versiones_archivos order by id desc limit 1"
        cursor.execute (sql_fetch_blob_query)
        fout.write(cursor.fetchone()[0])
        fout.close()

    finally:
        if (conn.is_connected()):
            cursor.close()
            conn.close()
readBLOB()

我得到的错误如下

TypeError: a bytes-like object is required, not 'str'

任何python方面的专家,如果能帮助我解决这个问题,或者能为我的脚本提供其他选择,我将不胜感激


Tags: 文件closesqlisfetchconnquerycursor
1条回答
网友
1楼 · 发布于 2024-06-27 02:15:34

显然,cursor.fetchone()[0]是一个字符串,但是您以'wb'(WriteBinary,或Bytes)的形式打开了文件,因此您不能向它写入字符串-只能向它写入bytes(准确地说,正如错误消息所说,“类似字节的对象”)

您应该对字符串进行编码以获取字节:

try:
   ...
   fout.write(cursor.fetchone()[0].encode())
finally:
   ...
   # don't forget to close the file even if there's an error
   fout.close()

相关问题 更多 >