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

SFTP访问文件夹后Python脚本pygame音频加载错误的排查求助

排查SFTP访问后Python脚本无法加载音频文件的问题

先确认脚本本身的潜在问题

  • 替换相对路径为绝对路径:
    脚本里用'Shutter.wav'这种相对路径,依赖当前工作目录(CWD)。SFTP访问文件夹时,可能会改变脚本运行时的CWD,导致找不到文件。直接写绝对路径,比如'/home/pi/your_project_dir/Shutter.wav',彻底规避路径解析问题。
  • 检查脚本换行符格式:
    每次出现问题后,执行file your_script.py查看文件格式。如果输出包含CRLF line terminators,说明脚本被转成了Windows换行格式,这会导致Python解析路径时出错。可以:
    1. 在脚本第一行添加#!/usr/bin/env python3
    2. 执行chmod +x your_script.py将脚本设为可执行
      这样能减少SFTP客户端自动转换换行符的概率。
  • 排查隐含特殊字符:
    用cat -A your_script.py查看脚本内容,重点看加载音频的那一行末尾是否有^M(Windows换行符标记)或其他不可见字符。这些字符会干扰路径解析,导致pygame无法识别文件。

解决SFTP客户端的自动修改问题

  • 关闭自动换行符转换:
    所有主流SFTP客户端(FileZilla、WinSCP、Cyberduck等)默认会把文本文件的LF换行符转成CRLF。找到客户端设置里的“文本模式自动转换”或“ASCII传输模式”选项,直接关闭,改成二进制模式传输所有文件(包括脚本)。
  • 锁定脚本文件权限:
    在树莓派上执行chmod 444 your_script.py,把脚本设为只读。即使SFTP客户端有自动修改的逻辑,也无法改写文件内容。

验证流程

  1. 先用dos2unix your_script.py修复脚本,确保能正常运行。
  2. 按上述方法修改路径为绝对路径,关闭SFTP客户端的自动转换功能。
  3. 用SFTP访问目标文件夹后,再次运行脚本,检查是否仍出现pygame.error。
  4. 如果问题依旧,执行ls -l Shutter.wav确认音频文件的权限,确保脚本运行用户(比如pi用户)有读取权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 12:35:23