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

Python脚本发送代理文件至Telegram频道遇缩进错误求助

解决Python Telegram脚本的缩进错误及代码优化

你的脚本运行时的IndentationError是由于代码块缩进不一致导致的,同时还存在文件操作的冗余问题。以下是修正并优化后的完整代码,可实现发送三个代理文件并为第一个文件添加统计标题的需求:

from telegram import Bot, InputMediaDocument

BOT_TOKEN = "xxx"
CHAT_ID = xxx

def count_lines(file_path):
    """统计文件行数"""
    with open(file_path, 'rb') as f:
        return len(f.readlines())

def main():
    bot = Bot(BOT_TOKEN)
    file_paths = (
        "proxy/proxies/http.txt",
        "proxy/proxies/socks4.txt",
        "proxy/proxies/socks5.txt"
    )
    
    # 统计各类型代理数量
    http_count = count_lines(file_paths[0])
    socks4_count = count_lines(file_paths[1])
    socks5_count = count_lines(file_paths[2])
    
    text = f"Total HTTPs:{http_count}\nTotal SOCKS4:{socks4_count}\nTotal SOCKS5:{socks5_count}"

    media_group = list()
    for f_path in file_paths:
        with open(f_path, "rb") as fin:
            # 仅为第一个文件添加标题
            caption = text if f_path == file_paths[0] else ''
            fin.seek(0)
            media_group.append(InputMediaDocument(fin, caption=caption))

    bot.send_media_group(CHAT_ID, media=media_group)

if __name__ == "__main__":
    main()

关键修正点说明:

  • 统一缩进:将所有代码块的缩进统一为4个空格,修复了media_group定义、for循环及内部代码的缩进不匹配问题。
  • 移除冗余操作:删除了手动调用file.close()的代码,with语句会自动完成文件资源的释放,避免重复关闭引发错误。
  • 修正文件操作逻辑:将fin.seek(0)移至with代码块内部,确保在文件打开状态下重置文件指针,避免文件关闭后操作对象失效。
  • 代码优化:提取统计行数的逻辑为独立函数count_lines,减少重复代码,提升代码可读性和可维护性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 20:55:25