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

Python文件写入异常:无法创建/追加文件,疑似关联Nerdtree

解决Python文件写入/追加无变化但读取正常的问题(疑似Nerdtree相关)

你碰到的这个问题确实有点挠头:Python代码执行写入、追加操作时没抛出任何错误,但文件要么没创建出来,要么内容没更新,可读取操作却完全正常,还怀疑是Nerdtree在搞鬼?我来帮你拆解可能的原因和解决办法:

第一步:先确认文件到底有没有被修改

别只盯着Vim和Nerdtree看,先打开终端用命令直接验证:

# 检查a.txt是否存在并查看内容
ls -l a.txt && cat a.txt
# 检查b.txt的最新内容
cat b.txt

如果终端里能看到正确的内容,说明Python的写入是成功的,问题出在Nerdtree的目录缓存或者Vim的缓冲区同步上;如果终端里也看不到内容,再排查Python的工作目录或权限(不过你说没抛IOError,这种情况概率很低)。

针对Nerdtree/Vim的解决步骤

  • 手动刷新Nerdtree目录列表:在Nerdtree的窗口中按下大写R键,这会强制Nerdtree重新扫描当前目录、刷新文件列表。刷新后再看看a.txt是否出现,b.txt的内容是否正常显示。
  • 刷新Vim的文件缓冲区:如果你已经在Vim里打开了b.txt,Vim可能缓存了旧内容,没同步磁盘更新。可以在该窗口执行:e命令重新加载文件,或者执行:checktime让Vim自动检查所有打开文件是否被外部修改,有更新就提示加载。
  • 确认工作目录是否一致:有时候Python脚本的工作目录和Vim当前工作目录不一样,导致操作的文件不在同一位置。
    • 在Python代码里加一行打印当前目录:
      import os
      print(os.getcwd())
      
    • 在Vim里执行:pwd查看当前目录,对比两者是否一致。如果不一样,要么修改Python脚本的工作目录,要么在Vim里用:cd切换到对应目录。
  • 开启Nerdtree自动刷新:要是经常碰到这种问题,可以在.vimrc里加一行配置,让Nerdtree自动监听文件系统变化并刷新:
    let NERDTreeAutoRefresh=1
    
    添加后重启Vim,以后文件创建、修改时Nerdtree就会自动更新列表了。

小建议:优化你的代码写法

你的追加代码可以改用with语句,更安全且无需手动关闭文件:

with open('b.txt', 'a+') as f:
    f.write('appending content')

不过这不是导致你当前问题的原因,只是个代码规范小提醒~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:52:36