Python3在Linux(RHEL)下用绝对路径删除文件提示不存在但实际存在
问题场景
在Linux(RHEL)系统下使用Python 3开发时,编写如下代码尝试删除指定文件:
os.remove(or.getcwd() + '/file.txt')
注:上述代码中or.getcwd为输入笔误,实际运行时为os.getcwd
报错信息
代码运行后抛出以下异常:
No such file or directory: '/path/to/file/file.txt'
排查过程中的矛盾点
- 已确认路径斜杠方向完全符合Linux系统规范,排除Windows环境特有的路径分隔符不兼容问题
- 直接复制报错信息中的路径,执行
ls命令,可以正常查看到目标文件确实存在 - 补充验证结果:调用
os.system('ls')可以列出目标文件,但同路径下调用os.listdir()无法列出该文件,同目录下的其他文件均可被os.listdir()正常识别
根因定位
最终确认问题出在前置的文件复制逻辑:此前使用os.popen执行文件复制操作时,没有等待子进程运行结束就执行了后续的删除逻辑,删除操作触发时,文件复制还未完成,文件尚未在文件系统中完全落地,因此触发了找不到文件的报错。
内容的提问来源于stack exchange,提问作者Guillaume Petitjean
相关产品推荐
相关产品推荐

