在Notepad++中运行Python时如何让脚本找到本地文件?
NppExec运行Python脚本相对路径找不到图片的解决办法
问题根源
NppExec默认的工作目录是Notepad的启动目录,而非当前脚本所在的文件夹。脚本里的images/xxx.png相对路径会基于Notepad启动目录查找,自然找不到脚本目录下的图片文件。
解决途径
1. 修正NppExec运行命令,切换到脚本目录
使用以下命令替代你之前的尝试,确保先切换到脚本所在目录再执行:
cmd /c cd "$(FULL_CURRENT_DIRECTORY)" && python "$(FULL_CURRENT_PATH)"
cd "$(FULL_CURRENT_DIRECTORY)":切换到当前脚本的所在目录&&:仅在切换目录成功后执行Python脚本,避免路径错误时仍运行脚本- 若需要保留命令窗口查看输出,将
/c改为/k即可
2. 脚本内使用绝对路径拼接(更健壮)
即使修正了运行命令,脚本被其他方式执行(如双击)时仍可能出现路径问题。可以用更简洁的方式获取脚本目录并拼接图片路径:
import os # 获取当前脚本所在的绝对目录 script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接图片路径(自动适配系统路径分隔符) background = PhotoImage(file=os.path.join(script_dir, "images", "for_loop_breakdown.png")) character = PhotoImage(file=os.path.join(script_dir, "images", "rectangle.png"))
os.path.abspath(__file__):直接获取脚本的绝对路径,比sys.argv[0]更稳定os.path.join():自动处理Windows和类Unix系统的路径分隔符,避免手动拼接出错
原有命令失效原因
你之前的第一个命令使用&而非&&,如果切换目录失败(比如路径含特殊字符),依然会执行Python脚本,导致工作目录未正确切换。&&能保证切换目录成功后再执行脚本,可靠性更高。
内容的提问来源于stack exchange,提问作者no-one
相关产品推荐
相关产品推荐

