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

Python使用PySimpleGUI实现文本文件按行逆序输出

TXT文件按行逆序展示实现方案

需求说明

使用PySimpleGUI读取.txt格式文本文件的内容,将内容按行逆序填充至Multiline多行组件中:

  • 逆序规则:原文件最后一行最先展示、第一行最后展示,每行内部的字符顺序保持不变
  • 效果示例:原文件逐行存储line1、line2、line3、line4、line5,最终逐行展示line5、line4、line3、line2、line1

原有方案问题分析

之前尝试的两种实现均不符合要求,错误原因一致:都是对读取到的完整文本字符串直接做全量反转,会颠倒所有字符的顺序,导致每行内部字符也被反转,出现5enil、4enil这类错误输出。
错误代码参考:

# 错误方案1
with open('file.txt','r') as f:
  x=f.read()
print(reversed(x))

# 错误方案2
with open('file.txt', 'r') as f:
  x=f.read()
print(x[::-1])

正确实现逻辑

核心思路:不要直接反转整个文本字符串,先将文本按行拆分为列表,仅反转行的排列顺序,每行内部字符保持不动,再将反转后的行列表拼接为完整文本传入Multiline组件即可。
完整可运行代码:

import PySimpleGUI as sg

# 界面布局
layout = [
    [sg.Text('选择TXT文件:'), sg.Input(), sg.FileBrowse(file_types=(("文本文件", "*.txt"),))],
    [sg.Multiline(size=(70, 20), key='-MULTILINE-')],
    [sg.Button('读取并按行逆序展示'), sg.Button('退出')]
]

window = sg.Window('TXT行逆序查看器', layout)

while True:
    event, values = window.read()
    if event in (sg.WIN_CLOSED, '退出'):
        break
    if event == '读取并按行逆序展示':
        file_path = values[0]
        if not file_path:
            sg.popup('请先选择目标TXT文件')
            continue
        # 读取并处理文件
        with open(file_path, 'r', encoding='utf-8') as f:
            # 按行读取,得到每行内容组成的列表
            line_list = f.readlines()
        # 仅反转行顺序,不改动行内字符
        reversed_line_list = reversed(line_list)
        # 拼接为完整文本
        final_content = ''.join(reversed_line_list)
        # 更新到多行组件
        window['-MULTILINE-'].update(final_content)

window.close()

关键注意点

  • 读取文件优先使用readlines()方法:该方法会自动按换行符拆分文本,返回值为行内容构成的列表,每个元素对应一整行内容(包含行尾换行符)
  • 反转操作作用于行列表即可:使用reversed(line_list)或者line_list[::-1]都能实现行顺序反转,两种写法都不会改动每行内部的字符顺序
  • 打开文件时建议显式指定encoding='utf-8',避免不同操作系统默认编码差异导致的中文乱码问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 20:57:17