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切换到对应目录。
- 在Python代码里加一行打印当前目录:
- 开启Nerdtree自动刷新:要是经常碰到这种问题,可以在
.vimrc里加一行配置,让Nerdtree自动监听文件系统变化并刷新:
添加后重启Vim,以后文件创建、修改时Nerdtree就会自动更新列表了。let NERDTreeAutoRefresh=1
小建议:优化你的代码写法
你的追加代码可以改用with语句,更安全且无需手动关闭文件:
with open('b.txt', 'a+') as f: f.write('appending content')
不过这不是导致你当前问题的原因,只是个代码规范小提醒~
内容的提问来源于stack exchange,提问作者user669132
相关产品推荐
相关产品推荐

