无法使用Python Telegram bot将文件保存在自定义路径目录中



我正在使用Telegram bot下载文件,我当前的代码看起来像这样:

def file_handler(Update, context: CallbackContext):
file = context.bot.getFile(Update.message.document.file_id)
print("file_id: " + str(Update.message.document.file_id))
file.download(custom_path='C:/Users/User/Desktop/python/projects/Telegram-Database/files')
def main():
updater = Updater(token, use_context=True)
dispatcher = updater.dispatcher
dispatcher.add_handler(MessageHandler(Filters.document, file_handler))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()

当我这样做的时候:

file.download()

它下载当前目录中的文件,但我想下载文件夹中的所有文件。所以我在这里查阅了文档:https://python-telegram-bot.readthedocs.io/en/stable/telegram.file.html,我确实可以设置自定义路径来下载该文件夹中的文件。但是,当我使用当前代码时,我得到一个权限错误:

with open(filename, 'wb') as fobj:
PermissionError: [Errno 13] Permission denied: 'C:/Users/User/Desktop/python/projects/Telegram-Database/files'

我不知道为什么。我试着重新创建文件夹并重新启动程序,但我总是得到同样的错误。我在Telegram聊天机器人中搜索了这个特定的错误,但什么也没有出现。你能帮帮我吗?

说明

您不能将文件夹视为文件,download方法接受文件的路径。如文档中所述:

下载此文件。默认情况下,文件以Telegram报告的原始文件名保存在当前工作目录中。如果文件没有文件名,则使用文件ID作为文件名。如果提供了custom_path,它将被保存到该路径。如果定义了out,则使用out.write方法将文件内容保存到该对象。

代码变更

你可以使用下面的代码:

custom_path='C:/Users/User/Desktop/python/projects/Telegram-Database/files'

custom_path='C:/Users/User/Desktop/python/projects/Telegram-Database/files/file1.txt'

完整代码
def file_handler(Update, context: CallbackContext):
file = context.bot.getFile(Update.message.document.file_id)
print("file_id: " + str(Update.message.document.file_id))
file.download(custom_path='C:/Users/User/Desktop/python/projects/Telegram-Database/files/file1.txt')
def main():
updater = Updater(token, use_context=True)
dispatcher = updater.dispatcher
dispatcher.add_handler(MessageHandler(Filters.document, file_handler))
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()

相关内容

  • 没有找到相关文章

最新更新