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

树莓派4(Raspberry Pi OS)下Python3打开文本文件权限问题及全屏查看方案

树莓派OS下Python3打开文本文件权限问题解决及全屏查看方案

一、先搞定权限拒绝问题

权限报错大概率是文件/目录的读权限不足,或者文件归属不对,按以下步骤排查:

  1. 检查文件权限
    在终端执行命令查看目标文件的权限详情:
ls -l /home/csiro/Desktop/final_dobot_package/pydobot/logfile/logfile_month_1_year_2023.txt

如果输出中当前用户(csiro)对应的权限位没有r(比如显示-rw-------),给文件添加读权限:

chmod u+r /home/csiro/Desktop/final_dobot_package/pydobot/logfile/logfile_month_1_year_2023.txt

如果连目录都进不去,给目录加执行权限:

chmod u+x /home/csiro/Desktop/final_dobot_package/pydobot/logfile/
  1. 修正文件归属
    如果文件属于root或其他用户,修改归属为当前用户:
sudo chown csiro:csiro /home/csiro/Desktop/final_dobot_package/pydobot/logfile/logfile_month_1_year_2023.txt

二、正确实现全屏查看文本文件

你之前直接用Popen(file_open)的方式不对——系统不知道要用什么程序打开文本文件,只会把它当作可执行文件尝试运行,自然报错。以下是两种可行方案:

方案1:终端环境下用less全屏查看

less是Linux自带的终端文本查看器,默认全屏显示,支持滚动、搜索,按q退出。Python代码:

import os
from subprocess import Popen

file_name = 'logfile_month_1_year_2023.txt'
file_path = '/home/csiro/Desktop/final_dobot_package/pydobot/logfile/'
file_full_path = os.path.join(file_path, file_name)

# 调用less打开文件,-R参数保留文本颜色(如果有)
Popen(['less', '-R', file_full_path])

方案2:图形界面下全屏打开

如果你的树莓派带桌面环境,用leafpad编辑器(需先安装),添加--fullscreen参数实现全屏:

import os
from subprocess import Popen

file_name = 'logfile_month_1_year_2023.txt'
file_path = '/home/csiro/Desktop/final_dobot_package/pydobot/logfile/'
file_full_path = os.path.join(file_path, file_name)

# 用leafpad全屏打开文件
Popen(['leafpad', '--fullscreen', file_full_path])

没装leafpad的话先在终端安装:

sudo apt update && sudo apt install leafpad

方案3:纯Python实现终端全屏查看

不想依赖外部工具的话,用Python自带的curses库实现全屏滚动查看:

import os
import curses

file_name = 'logfile_month_1_year_2023.txt'
file_path = '/home/csiro/Desktop/final_dobot_package/pydobot/logfile/'
file_full_path = os.path.join(file_path, file_name)

def fullscreen_view(file_path):
    # 初始化终端全屏环境
    stdscr = curses.initscr()
    curses.curs_set(0)
    stdscr.clear()
    
    try:
        with open(file_path, 'r') as f:
            content = f.readlines()
        
        row = 0
        max_row, max_col = stdscr.getmaxyx()
        while True:
            stdscr.clear()
            # 显示当前可见区域的内容
            for i in range(max_row):
                if row + i < len(content):
                    line = content[row + i][:max_col-1]
                    stdscr.addstr(i, 0, line)
            stdscr.refresh()
            
            # 按键控制:↑↓滚动,q退出
            key = stdscr.getch()
            if key == ord('q'):
                break
            elif key == curses.KEY_UP and row > 0:
                row -= 1
            elif key == curses.KEY_DOWN and row + max_row < len(content):
                row += 1
    finally:
        # 恢复终端原有设置
        curses.endwin()

if __name__ == '__main__':
    fullscreen_view(file_full_path)

运行后按↑/↓滚动内容,按q退出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 10:35:48