Python TypeError:“fp”不是类文件对象,或者它不占用字节:“int”对象没有属性“strip”

问题描述 投票:0回答:1

该代码的本质是通过删除、转换、保存、下载和发送将我的消息转换为语音消息。做了4个功能。 1负责保存,2负责上传到服务器,3负责抓取消息,4负责发送。类型错误:“fp”不是类文件对象,或者它不占用字节:“int”对象没有属性“strip”

import requests
import random, vk_api, vk
from vk_api.utils import get_random_id
import sys
import time
import threading
import json
import gtts
import datetime
import queue
from vk_api.longpoll import VkLongPoll, VkEventType

dt = datetime.datetime.today()

namegs=(random.randrange(0,1000,1))

print(namegs)

q = queue.Queue()

atchdoc=("null")

token = "TOKEN"
message_text = ("null")
file_path = ('null')

print("Попыта авторизации...")
vk_session = vk_api.VkApi(token=token)

longpoll = VkLongPoll(vk_session, wait=10)
vk = vk_session.get_api()
print("Авторизация прошла успешно!")

def SaveGS():
file_path = ("null")
messagegs=gtts.gTTS(q.get(), lang="ru")
messagegs.save("abc.ogg")
file_path = ("abc.ogg")
q.put(file_path)
print (file_path)
print('начинаем загружать запись..')
time.sleep(1)
LoadGS()


def LoadGS():
file_path = ("null")
url = "URL"; 
url = url.replace("\/","/"); 
file_path = q.get(file_path)
response = requests.post(url, files={"file": open(file_path, 'rb')});
resp1=(response.content)
resp1 = resp1[9:]
resp1 = str(resp1, 'utf-8')
resp1 = resp1.replace('}', '')
resp1 = resp1.replace('"', '')
url2 = "https://api.vk.com/method/docs.save?file=" + resp1 + "&access_token=" + token + "&v=5.81"
response1 = requests.post(url2, files={"file": open(file_path, "rb")})
resp2 = (response1.text)
resp2 = resp2[19:-934]
docid = resp2
atchdoc = "doc378218712_" + docid
q.put(atchdoc)
print("DocumentID" + atchdoc)
print("сообщение загружено..")
time.sleep(5)
MessageIMPORT()

print("Подходим к нужному методу!")

def MessageEXPORT():
for event in longpoll.listen():

print("Attachment ID : "+ atchdoc)

print("лонгпул работает")
if atchdoc != "null":
LoadGS()
else:
if event.type == VkEventType.MESSAGE_NEW and event.text:
dictmessID = vk.messages.getHistory(
count=1,
user_id=event.user_id
)
evvchtid=event.user_id
q.put(evvchtid)
message_id = dictmessID["items"]
message_text = event.text
print(message_text)
message_id = '; '.join(map(lambda x: f'{x[0]}:{x[1]}', dictmessID.items()))
message_id = message_id.split(',')[2]
message_id = message_id.split(':')[1]
message_id = message_id.replace(" ", "")
print("Message_ID: " + message_id)
q.put(message_text)
vk.messages.delete(
message_ids=message_id,
delete_for_all=True
)
print('сообщение удалено..')

SaveGS()





def MessageIMPORT():
print("отправляем сообщение!")
vk.messages.send(
message=(),
user_id=q.get(evvchtid),
random_id=get_random_id(),
attachment=q.get(atchdoc))
print("Голосовое сообщение отправлено!")
MessageEXPORT()







MessageEXPORT()

错误:

TypeError: 'fp' is not a file-like object or it does not take bytes: 'int' object has no attribute 'strip'

出现错误,根本不明白本质是什么,我尝试了一些修正方法(我没有删除这段代码)希望你能帮忙..((

python json vk gtts
1个回答
0
投票

我遇到了同样的错误,这是因为我向 gTTS 传递的是列表而不是字符串。检查您是否正确传递了字符串。

© www.soinside.com 2019 - 2024. All rights reserved.