Python 常见路径问题“No such file or directory“

Python编程中,常常会遇到FileNotFoundError的问题,表明程序试图访问一个不存在的文件或目录。这个异常往往是由于在编程时不小心写错或错误使用了文件路径,但是在最近的编程中发现,有时问题也可能与运行环境有关,在这里做一个总结,希望能帮助读者解决相关问题:

一、文件路径错误

       确保文件路径输入正确,常见的输入错误如:拼写错误、多余的空格、错误的目录分隔符(一般直接复制的文件路径分隔符为\,但在python编程中文件路径分隔符为/)。

二、工作目录问题

       使用绝对路径可以避免当前工作目录带来的问题,如果要使用相对路径,则要注意子目录和父目录之间调用的问题。

这里举一个例子:

       假如文件目录如下:

Project:
    log.txt
    app.py
    Path1:
        code1.py
        code2.py
    Path2:
        code3.py
import os 
 
#使用绝对路径打开log.txt
with open('D:/Project/log.txt','r') as file:
        data = file.read()

#引用子目录上的py文件,如app.py调用同级目录Path1下的code1.py
#in app.py
from Path1 import code1.py

#引用父目录上的py文件,将父目录添加到当前文件的sys.path中,如code1.py调用上一级目录的app.py
#in code1.py
import sys
sys.path.append("..")
import app.py

#引用父目录下另一个子目录的文件,如code1.py调用Path2目录下的code3.py
#in code1.py
import sys
sys.path.append("..")

       如果确认路径正确仍然报错后,可使用os.getcwd()来查看当前运行时所在的工作目录是否与该文件所在目录一致。

import os
print(f"当前工作目录:{os.getcwd()}")

三、文件权限问题

确保运行文件程序有足够的权限去访问文件,可通过os.access来检查读写权限。

import os, sys

# 假定 /tmp/foo.txt 文件存在,并有读写权限

ret = os.access("/tmp/foo.txt", os.F_OK)
print "F_OK - 返回值 %s"% ret

ret = os.access("/tmp/foo.txt", os.R_OK)
print "R_OK - 返回值 %s"% ret

ret = os.access("/tmp/foo.txt", os.W_OK)
print "W_OK - 返回值 %s"% ret

ret = os.access("/tmp/foo.txt", os.X_OK)
print "X_OK - 返回值 %s"% ret

四、VSCode运行路径

        在VSCode运行程序时,其运行目录不一定在该程序文件所在目录下,这个时候使用相对路径自然会报错。这个时候会发现如果在该目录下打开控制台运行将不会报错,但在VSCode上会报错,就是因为运行目录不同而导致不同的运行结果。

可修改配置确保其始终在当前所在目录下运行,这个时候使用相对路径就不会再报错。

     (1)在扩展中搜索python,点击设置按钮下的“扩展设置”。

    (2)找到如下选项并勾选。

      再次运行则可以使用相对路径。

欢迎大家补充指正,希望能对读者有所帮助!

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值