Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
Python教程:高效计算文本文件中指定列的最后N个值之和与平均值_创想鸟

Python教程:高效计算文本文件中指定列的最后N个值之和与平均值

Python教程:高效计算文本文件中指定列的最后N个值之和与平均值

本教程详细讲解如何使用python从结构化文本文件中提取特定数据。我们将学习如何读取文件内容、利用列表切片获取末尾n行,并对这些行的指定列(如数值列)进行求和与平均值计算,提供简洁高效的代码示例和专业指导,以解决常见的数据处理需求。

引言

在数据分析和日志处理的日常工作中,我们经常需要处理结构化的文本文件。其中一个常见的需求是,从文件的末尾(通常代表最新的数据)提取特定列的数值,并进行统计分析,例如计算其总和或平均值。本教程将以一个具体的示例,详细阐述如何使用Python高效、准确地实现这一目标。

数据结构与目标

假设我们有一个名为lista.txt的文本文件,其中记录了日期和对应的数值,每行包含两个以空格分隔的字段,格式如下:

08/12/2023 81.309/12/2023 80.810/12/2023 80.911/12/2023 81.012/12/2023 81.113/12/2023 81.514/12/2023 80.115/12/2023 81.016/12/2023 80.917/12/2023 80.6

我们的核心目标是,给定一个整数N(例如N=7),计算文件中第二列(即数值列)最后N个数值的总和及其平均值。

核心实现策略

为了高效且准确地完成上述任务,我们将采用以下分步策略:

立即学习“Python免费学习笔记(深入)”;

完整读取文件内容:首先,将整个文本文件的所有行一次性读入内存,存储为一个字符串列表。获取末尾N行数据:利用Python列表强大的切片(slice)功能,快速截取列表末尾的N个元素,即我们所需的最新的N行数据。解析并执行计算:遍历这N行数据。对每一行,使用字符串分割方法提取出第二列的数值字符串,并将其转换为浮点数类型。随后,对这些浮点数进行累加求和。计算平均值:将求得的总和除以N,即可得到平均值。

Python 代码示例

以下是实现上述逻辑的Python代码,其中包含了错误处理机制,以增强程序的健壮性:

# 定义待处理文件的完整路径file_path = '/storage/emulated/0/Python/lista.txt'# 定义需要计算的末尾行数NN = 7try:    # 1. 安全地打开并读取文件所有行    # 'r' 表示只读模式,encoding='utf-8' 指定文件编码以避免乱码    with open(file_path, 'r', encoding='utf-8') as f:        lines = f.readlines()    # 2. 健壮性检查:文件是否为空或行数是否小于N    if not lines:        print("文件为空,无法进行计算。")        # 退出程序或进行其他处理        exit()    total_lines = len(lines)    if total_lines < N:        print(f"警告:文件中只有 {total_lines} 行,不足 {N} 行。将计算所有行的总和与平均值。")        N = total_lines # 调整N为实际行数,以避免索引错误    # 3. 获取末尾N行数据    # 列表切片 [-N:] 能够高效地获取列表的最后N个元素    last_N_lines = lines[-N:]    # 4. 提取第二列数值并求和    # 使用生成器表达式结合 sum() 函数,代码简洁且高效    # line.split() 将行按空格分割成字符串列表    # [1] 获取分割后列表的第二个元素(索引为1),即数值字符串    # float() 将数值字符串转换为浮点数    mysum = sum(float(line.split()[1]) for line in last_N_lines)    # 5. 计算平均值    average = mysum / N    # 6. 输出结果    # {:.2f} 格式化浮点数,保留两位小数    print(f"文件 '{file_path}' 中最后 {N} 个值的总和: {mysum:.2f}")    print(f"文件 '{file_path}' 中最后 {N} 个值的平均值: {average:.2f}")except FileNotFoundError:    print(f"错误:文件 '{file_path}' 未找到。请检查文件路径是否正确。")except IndexError:    print("错误:文件内容格式不正确,无法提取第二列数据。请确保每行至少有两列。")except ValueError:    print("错误:文件第二列包含非数值数据,无法转换为浮点数。请检查数据格式。")except ZeroDivisionError:    print("错误:尝试除以零,可能是文件为空或N值为0。")except Exception as e:    print(f"发生未知错误: {e}")

代码解析

file_path = ‘…’: 定义了待处理文本文件的完整路径。请根据实际情况修改此路径。N = 7: 设置了我们希望计算的末尾行数。这个值可以根据您的需求进行调整。with open(file_path, ‘r’, encoding=’utf-8′) as f::这是Python中处理文件的推荐方式。with语句确保文件在操作完成后(无论是否发生错误)都会被正确关闭,避免资源泄露。’r’参数表示以只读模式打开文件。encoding=’utf-8’参数明确指定了文件的编码格式,这对于处理包含非ASCII字符(如中文)的文件至关重要,可以有效避免编码错误。lines = f.readlines(): 此方法读取文件的所有行,并将它们存储在一个列表中。列表的每个元素都是文件中的一行(包含换行符n)。if len(lines) : 这是一个重要的健壮性检查。如果文件的总行数少于我们期望的N值,程序会发出警告并自动将N调整为文件的实际行数,从而避免因尝试访问不存在的索引而导致的IndexError。last_N_lines = lines[-N:]: 这是获取末尾N行数据的核心操作。Python列表的切片功能非常强大,[-N:]语法能够从列表末尾向前截取N个元素,返回一个新的列表,其中包含最新的N行数据。mysum = sum(float(line.split()[1]) for line in last_N_lines):这是一个高效且简洁的生成器表达式(Generator Expression)与sum()函数结合的用法。for line in last_N_lines: 迭代last_N_lines列表中的每一行字符串。line.split(): 对当前行字符串进行分割。默认情况下,split()会根据空格符(包括多个空格、制表符等)分割字符串,并返回一个字符串列表。例如,”17/12/2023 80.6″.split()会得到[’17/12/2023′, ‘80.6’]。[1]: 访问分割后列表的第二个元素(索引为1),即我们所需的数值字符串(例如’80.6’)。float(…): 将提取到的数值字符串转换为浮点数类型,以便进行数学计算。sum(…): 对所有由生成器表达式产生的浮点数进行累加求和。average = mysum / N: 计算求得的总和与N的商,即为平均值。print(f”…”): 使用F-string进行格式化输出,{mysum:.2f}和{average:.2f}将浮点数格式化为保留两位小数。try…except 错误处理: 代码中包含了多个except块,用于捕获可能发生的常见错误:FileNotFoundError: 当指定的文件路径不存在时触发。IndexError: 当line.split()[1]操作失败时,通常意味着某行没有足够的列(例如,只有一列数据)。ValueError: 当float()函数尝试转换一个非数值字符串时触发,表明第二列数据不是有效的数字。ZeroDivisionError: 当N为0时(例如文件为空),尝试进行除法运算会触发此错误。Exception as e: 捕获其他所有未预料到的错误,提供更全面的错误信息。

注意事项与最佳实践

文件路径的准确性:确保file_path变量指向的文件实际存在且路径正确。在不同操作系统中,文件路径的表示方式可能略有差异(例如,Windows系统倾向于使用反斜杠,但Python中建议使用正斜杠/或原始字符串r’…’来避免转义问题)。数据格式的一致性:本教程的代码假定文件的每一行都至少有两列,并且第二列的数据总是可以转换为浮点数的有效数字。如果文件格式不一致(例如,某些行只有一列,或第二列包含文本),则可能导致IndexError或ValueError。在实际应用中,您可能需要更复杂的解析逻辑和更严格的数据校验。内存消耗:f.readlines()方法会将文件的所有内容一次性加载到内存中。对于非常大的文件(例如,GB级别),这可能导致内存溢出(MemoryError)。对于这类超大文件,更优的策略是逐行读取,并使用collections.deque等数据结构来维护一个固定大小的滑动窗口,以减少内存占用。然而,对于大多数常见大小的文件,readlines()方法是简洁且高效的选择。编码的重要性:明确指定文件编码(如encoding=’utf-8’)是一个良好的编程习惯。它可以避免因系统默认编码与文件实际编码不匹配而导致的乱码或UnicodeDecodeError。N值的验证:代码中已加入对N值与文件实际行数关系的检查,这增强了程序的鲁棒性。始终考虑边界条件,例如文件为空或N值大于文件总行数的情况。

总结

通过本教程,我们学习了如何利用Python高效地从结构化文本文件中提取并计算指定列的末尾N个值的总和与平均值。核心技术在于f.readlines()一次性读取所有行,lines[-N:]进行列表切片以获取最新数据,并结合生成器表达式进行数据解析和计算。这种方法简洁、高效且易于理解,适用于处理中小型结构化文本文件的数据分析任务。在实际应用中,结合完善的错误处理和对文件大小的考量,可以构建出更加健壮和高效的数据处理脚本。

以上就是Python教程:高效计算文本文件中指定列的最后N个值之和与平均值的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1377963.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Python中高效且简洁的列表初始化方法
上一篇 2025年12月14日 18:13:57
Pygame中绘制动态矢量箭头的技巧与常见陷阱
下一篇 2025年12月14日 18:14:02

相关推荐

  • stickynotesnamespace是什么怎么删除?

    stickynotesnamespace是什么怎么删除?stickynotesnamespace是什么怎么删除?stickynotesnamespace是什么怎么删除?stickynotesnamespace是什么怎么删除?

    我们在使用windows 7系统时,会发现有一个便笺工具叫stickynotes。stickynotes的功能类似于一个电子便签本,如果想删除它,个人认为可以通过控制面板来完成删除操作。接下来就看看小编的具体操作步骤吧!stickynotesnamespace是什么?如何删除呢? 什么是Sticky…

    2026年9月25日 • 用户投稿
    100
  • 用豆包AI生成Python数据挖掘代码

    用豆包AI生成Python数据挖掘代码用豆包AI生成Python数据挖掘代码用豆包AI生成Python数据挖掘代码用豆包AI生成Python数据挖掘代码

    想用豆包ai生成python数据挖掘代码的关键在于明确任务目标和数据结构。1. 首先明确数据挖掘任务类型,如分类、聚类或回归,并具体描述需求,例如“根据用户年龄、消费金额和购买频率做客户分群”。2. 接着提供清晰的数据格式与来源,比如说明csv文件中的字段信息,以便ai进行数据预处理和建模。3. 要…

    2026年9月25日 • 用户投稿
    900
  • sublime怎么解决许可证密钥(license key)无效问题 _sublime许可证密钥无效修复方法

    sublime怎么解决许可证密钥(license key)无效问题 _sublime许可证密钥无效修复方法sublime怎么解决许可证密钥(license key)无效问题 _sublime许可证密钥无效修复方法sublime怎么解决许可证密钥(license key)无效问题 _sublime许可证密钥无效修复方法sublime怎么解决许可证密钥(license key)无效问题 _sublime许可证密钥无效修复方法

    使用官方购买的正版密钥并清除非法残留可解决Sublime Text许可证无效问题,确保正确输入用户名和多行密钥,删除Local目录下的License.sublime_license文件,检查hosts文件是否屏蔽验证域名,重启软件后即可恢复正常。 Sublime Text 出现许可证密钥无效的问题,…

    2026年9月25日 • 用户投稿
    200
  • RTX 5080整机塞进保时捷911轮毂!通过钥匙开机重启

    RTX 5080整机塞进保时捷911轮毂!通过钥匙开机重启RTX 5080整机塞进保时捷911轮毂!通过钥匙开机重启RTX 5080整机塞进保时捷911轮毂!通过钥匙开机重启RTX 5080整机塞进保时捷911轮毂!通过钥匙开机重启

    10月13日,当汽车与高性能计算相遇,会激发出怎样的创意奇迹?nvidia在最新一期geforce garage节目中揭晓了答案。 这一次,他们携手改装界传奇人物JCustom(Justin Chu),将一台完整的RTX 5080游戏主机巧妙植入保时捷911的轮毂之中,实现了汽车工艺与电脑科技的惊艳…

    2026年9月25日 • 用户投稿
    100
  • 苹果怎么查激活时间

    苹果怎么查激活时间苹果怎么查激活时间苹果怎么查激活时间苹果怎么查激活时间

    您可以通过以下步骤查询 Apple 设备的激活时间:1. 打开设备“设置”;2. 点按“通用”;3. 点按“关于”;4. 查找“激活于”标签即可查看激活时间。 如何查询 Apple 设备的激活时间 想知道您 Apple 设备的激活时间吗?以下是查询该信息的步骤: 步骤 1:访问设备设置 在您的 Ap…

    2026年9月25日 • 用户投稿
    000
  • 本机IP地址获取教程—实用步骤解析本机网络IP检查方式

    本机IP地址获取教程—实用步骤解析本机网络IP检查方式本机IP地址获取教程—实用步骤解析本机网络IP检查方式本机IP地址获取教程—实用步骤解析本机网络IP检查方式本机IP地址获取教程—实用步骤解析本机网络IP检查方式

    通过命令提示符输入ipconfig可查Windows本机IP;2. macOS在系统设置网络选项中查看;3. Linux使用ip a命令查找inet地址;4. 浏览器访问ip.cn等网站可查公网IP。 想知道自己的本机IP地址?无论是排查网络问题,还是设置局域网设备,获取本机IP是基础操作。下面介绍…

    2026年9月25日 • 用户投稿
    400
  • Bukkit插件开发:正确处理物品显示名称与玩家识别

    Bukkit插件开发:正确处理物品显示名称与玩家识别Bukkit插件开发:正确处理物品显示名称与玩家识别Bukkit插件开发:正确处理物品显示名称与玩家识别Bukkit插件开发:正确处理物品显示名称与玩家识别

    本文旨在解决Bukkit插件开发中,从BlockPlaceEvent获取物品显示名称并将其用于玩家识别时常见的“乱码”问题。我们将深入探讨Component对象与纯文本字符串的区别,并提供两种核心解决方案:直接获取放置方块的玩家名称,以及如何正确地将Component转换为纯文本字符串,以避免不必要…

    2026年9月25日 • 用户投稿
    300
  • sublime怎么折叠所有代码_sublime代码折叠快捷方法

    sublime怎么折叠所有代码_sublime代码折叠快捷方法sublime怎么折叠所有代码_sublime代码折叠快捷方法sublime怎么折叠所有代码_sublime代码折叠快捷方法sublime怎么折叠所有代码_sublime代码折叠快捷方法

    Sublime Text 支持多种代码折叠快捷键,Windows/Linux 使用 Ctrl + Shift + [/] 折叠/展开代码块,Ctrl + K, Ctrl + 1 展开所有用 Ctrl + K, Ctrl + J,macOS 用户将 Ctrl 替换为 Command。 在 Sublim…

    2026年9月25日 • 用户投稿
    200
  • Win10电脑亮度调节按钮怎么显示出来?

    Win10电脑亮度调节按钮怎么显示出来?Win10电脑亮度调节按钮怎么显示出来?Win10电脑亮度调节按钮怎么显示出来?Win10电脑亮度调节按钮怎么显示出来?

    很多用户在使用电脑时常常会遇到屏幕亮度过低的问题,这会对使用体验造成影响。实际上,我们可以通过一些方法自行调整屏幕亮度。那么,如果台式电脑没有亮度调节按钮该怎么办呢?下面将为大家详细介绍解决办法。 Win10 台式电脑无亮度调节按钮的解决方法 一、显示设置 在 Win10 桌面的空白区域右键,选择“…

    2026年9月25日 • 用户投稿
    200
  • 政府机构 5000 万台电脑将替换为国产 Linux

    政府机构 5000 万台电脑将替换为国产 Linux政府机构 5000 万台电脑将替换为国产 Linux政府机构 5000 万台电脑将替换为国产 Linux政府机构 5000 万台电脑将替换为国产 Linux

    点击上方“芋道源码”,选择“设为星标” 无论是前浪,还是后浪? 只要能浪,就是好浪! 每日 10:33 更新文章,让你每天都有点点收获… 精选源码专栏 原创 | Java 2021 超神之路,很肝~带中文详细注释的开源项目Dubbo RPC 框架源码解析Netty 网络应用框架源码解析R…

    2026年9月25日 • 用户投稿
    400
  • 想将 AI 模型组装工具与豆包联用完成模型组装?方法详解​

    想将 AI 模型组装工具与豆包联用完成模型组装?方法详解​想将 AI 模型组装工具与豆包联用完成模型组装?方法详解​想将 AI 模型组装工具与豆包联用完成模型组装?方法详解​想将 AI 模型组装工具与豆包联用完成模型组装?方法详解​

    ai模型组装工具与豆包联用是可行且高效的,关键在于接口兼容性、数据流转和部署方式。具体步骤如下:1. 理解豆包的模型接入规范,包括支持的模型格式、api调用方式及资源需求;2. 在组装工具中完成模型构建、训练与导出,确保符合平台要求;3. 如需转换模型格式(如pytorch转onnx),使用相应工具…

    2026年9月25日 • 用户投稿
    100
  • AI Overviews如何实现数据自动备份 AI Overviews备份策略设置

    AI Overviews如何实现数据自动备份 AI Overviews备份策略设置AI Overviews如何实现数据自动备份 AI Overviews备份策略设置AI Overviews如何实现数据自动备份 AI Overviews备份策略设置AI Overviews如何实现数据自动备份 AI Overviews备份策略设置

    ai overviews可以辅助制定数据备份策略,但不直接执行备份。1. 使用关键词搜索可获取不同平台的备份设置步骤;2. 汇总备份频率、存储位置及安全加密建议;3. 可学习选择合适工具、设定备份路径与启用加密机制;4. 避免忽略日志检查、空间预留、版本控制与单一备份依赖;5. 建议结合手动验证、通…

    2026年9月25日 • 用户投稿
    200
  • 如何利用Debian Apache日志提升网站性能

    如何利用Debian Apache日志提升网站性能如何利用Debian Apache日志提升网站性能如何利用Debian Apache日志提升网站性能如何利用Debian Apache日志提升网站性能

    本文将阐述如何通过分析Debian系统下的Apache日志来提升网站性能。 一、日志分析基础 Apache日志记录了所有HTTP请求的详细信息,包括IP地址、时间戳、请求URL、HTTP方法和响应代码等。在Debian系统中,这些日志通常位于/var/log/apache2/access.log和/…

    2026年9月25日 • 用户投稿
    100
  • TPM 2.0芯片除了加密还有哪些实用功能?

    TPM 2.0芯片除了加密还有哪些实用功能?TPM 2.0芯片除了加密还有哪些实用功能?TPM 2.0芯片除了加密还有哪些实用功能?TPM 2.0芯片除了加密还有哪些实用功能?

    TPM 2.0不仅是加密工具,更是硬件级安全基石,通过构建信任链确保系统启动完整性,支持安全启动、设备健康证明、凭据保护及远程认证,广泛应用于企业零信任架构、虚拟化安全与身份验证(如Windows Hello、FIDO2),实现从固件到操作系统的全流程防护。 TPM 2.0芯片远不止是加密的工具,它…

    2026年9月25日 • 用户投稿
    100
  • Java字符串高级解析:使用正则表达式处理复杂指令模式

    Java字符串高级解析:使用正则表达式处理复杂指令模式Java字符串高级解析:使用正则表达式处理复杂指令模式Java字符串高级解析:使用正则表达式处理复杂指令模式Java字符串高级解析:使用正则表达式处理复杂指令模式

    本教程演示如何使用Java的java.util.regex包,通过正则表达式高效解析包含多条调音指令的复杂字符串。我们将学习构建匹配特定模式的正则表达式,并利用Pattern和Matcher类从输入字符串中准确提取乐器名称、调音方向和数值,从而将原始指令转换为清晰可读的输出格式。 1. 问题背景与挑…

    2026年9月25日 • 用户投稿
    100
  • sublime如何同步多台电脑的配置和插件 _sublime多设备配置同步方法

    sublime如何同步多台电脑的配置和插件 _sublime多设备配置同步方法sublime如何同步多台电脑的配置和插件 _sublime多设备配置同步方法sublime如何同步多台电脑的配置和插件 _sublime多设备配置同步方法sublime如何同步多台电脑的配置和插件 _sublime多设备配置同步方法

    通过管理Sublime Text配置目录并结合云盘或Git实现多设备同步。将Packages目录移至云盘并创建符号链接,或用Git版本化关键配置文件,配合Package Control自动恢复插件,确保各设备设置一致。 Sublime Text 是许多开发者喜爱的轻量级编辑器,跨设备使用时保持配置和…

    2026年9月25日 • 用户投稿
    100
  • 操作系统的分类和发展

    操作系统的分类和发展操作系统的分类和发展操作系统的分类和发展操作系统的分类和发展

    知识概览 文章目录知识概览操作系统的分类和发展 手工操作阶段批处理阶段——单道批处理系统批处理阶段——多道批处理系统分时操作系统实时操作系统其他几种操作系统 知识回顾与重要考点 操作系统的分类和发展 如此AI写作 AI驱动的内容营销平台,提供一站式的AI智能写作、管理和分发数字化工具。 137 查看…

    2026年9月25日 • 用户投稿
    000
  • 360极速浏览器怎么关闭热搜和新闻弹窗_360极速浏览器屏蔽热点资讯与弹窗教程

    360极速浏览器怎么关闭热搜和新闻弹窗_360极速浏览器屏蔽热点资讯与弹窗教程360极速浏览器怎么关闭热搜和新闻弹窗_360极速浏览器屏蔽热点资讯与弹窗教程360极速浏览器怎么关闭热搜和新闻弹窗_360极速浏览器屏蔽热点资讯与弹窗教程360极速浏览器怎么关闭热搜和新闻弹窗_360极速浏览器屏蔽热点资讯与弹窗教程

    关闭360极速浏览器热搜和新闻弹窗需三步操作:一、在“设置-实验室-其他设置”中关闭“启用‘360热点资讯’功能”;二、在“隐私设置-网站设置-弹出式窗口”中开启阻止;三、手动点击弹窗上的“不再弹出”选项。 如果您在使用360极速浏览器时频繁遭遇热搜和新闻弹窗干扰,影响正常浏览体验,这通常是因为浏览…

    2026年9月25日 • 用户投稿
    100
  • sublime如何卸载插件 _sublime插件卸载教程

    sublime如何卸载插件 _sublime插件卸载教程sublime如何卸载插件 _sublime插件卸载教程sublime如何卸载插件 _sublime插件卸载教程sublime如何卸载插件 _sublime插件卸载教程

    通过Package Control卸载:打开Sublime Text,调出命令面板,输入Remove Package,选择插件并删除;2. 手动删除:关闭软件后进入Packages目录,删除对应插件文件夹;3. 注意清理User目录下的残留配置文件,避免冗余。操作安全,不影响主程序。 在 Subli…

    2026年9月25日 • 用户投稿
    100
  • 夸克浏览器PC版怎么下载安装_夸克浏览器电脑版下载与安装全流程

    夸克浏览器PC版怎么下载安装_夸克浏览器电脑版下载与安装全流程夸克浏览器PC版怎么下载安装_夸克浏览器电脑版下载与安装全流程夸克浏览器PC版怎么下载安装_夸克浏览器电脑版下载与安装全流程夸克浏览器PC版怎么下载安装_夸克浏览器电脑版下载与安装全流程

    首先访问夸克官网下载电脑版安装包,运行QuarkSetup.exe完成安装并创建快捷方式,最后启动浏览器登录阿里系账号同步数据并进行个性化设置。 如果您尝试在电脑上使用夸克浏览器,但尚未安装其桌面版本,则需要完成下载与安装流程。以下是解决此问题的步骤: 本文运行环境:联想小新Air 14,Windo…

    2026年9月25日 • 用户投稿
    100

发表回复

登录后才能评论
关注微信