无名阁,只为技术而生。流水不争先,争的是滔滔不绝。

Python报”FileNotFoundError”文件路径错误或不存在,权限问题(无法访问目录或文件),文件名拼写错误,文件已被删除或移动,的原因以及解决办法(图文详解1)

Python Micheal 7个月前 (04-23) 126次浏览 已收录 扫描二维码
文章目录[隐藏]
Python报”FileNotFoundError”文件路径错误或不存在,权限问题(无法访问目录或文件),文件名拼写错误,文件已被删除或移动,的原因以及解决办法(图文详解1)

filenotfounderror

Python报”FileNotFoundError”,文件路径错误或不存在,权限问题(无法访问目录或文件),文件名拼写错误,文件已被删除或移动,的原因以及解决办法(图文详解1)

出现 “FileNotFoundError” 错误的主要原因如下:

  1. 文件路径错误或不存在
    2.权限问题(无法访问目录或文件)
  2. 文件名拼写错误
  3. 文件已被删除或移动
  4. 代码逻辑问题(例如动态生成文件路径却未检查是否存在)

下面我来详细介绍解决方案和原理:

1. 文件路径错误或不存在

  • 解决方案:检查文件路径是否正确,确认文件是否真实存在于指定路径。可以使用 os.path.exists() 函数检查文件是否存在。
  • 底层原理:操作系统根据给定的文件路径去寻找对应的文件,如果找不到则抛出 FileNotFoundError 异常。
  • 示例代码:
import os

file_path = 'path/to/your/file.txt'
if os.path.exists(file_path):
    # 文件存在,可以继续执行后续操作
    with open(file_path, 'r') as file:
        content = file.read()
        print(content)
else:
    print(f"Error: {file_path} does not exist.")

2. 权限问题(无法访问目录或文件)

  • 解决方案:检查当前用户是否有访问文件或目录的权限,如果没有需要提升权限或切换用户。可以使用 os.access() 函数检查权限。
  • 底层原理:操作系统根据文件或目录的权限设置来决定是否允许当前用户访问,如果权限不足则抛出 FileNotFoundError 异常。
  • 示例代码:
import os

file_path = 'path/to/your/file.txt'
if os.access(file_path, os.R_OK):
    # 有读取权限,可以继续执行后续操作
    with open(file_path, 'r') as file:
        content = file.read()
        print(content)
else:
    print(f"Error: You don't have permission to access {file_path}.")

3. 文件名拼写错误

  • 解决方案:仔细检查文件名是否拼写正确,包括大小写、扩展名等。
  • 底层原理:操作系统根据给定的文件名去寻找对应的文件,如果找不到则抛出 FileNotFoundError 异常。
  • 示例代码:与前两种情况相同。

4. 文件已被删除或移动

  • 解决方案:检查文件是否真的被删除或移动到了其他位置。可以使用 os.path.exists() 函数进行检查。
  • 底层原理:操作系统根据给定的文件路径去寻找对应的文件,如果文件已不存在于指定位置则抛出 FileNotFoundError 异常。
  • 示例代码:与前两种情况相同。

5. 代码逻辑问题(例如动态生成文件路径却未检查是否存在)

  • 解决方案:在代码中添加对文件路径的检查,确保文件确实存在于指定位置。可以使用 os.path.exists() 函数进行检查。
  • 底层原理:如果代码动态生成文件路径却未检查是否存在,则操作系统根据给定的路径去寻找文件,但由于文件不存在,因此抛出 FileNotFoundError 异常。
  • 示例代码:
import os

# 动态生成文件路径
file_name = 'example.txt'
file_path = os.path.join('path', 'to', file_name)

# 检查文件路径是否存在
if os.path.exists(file_path):
    # 文件存在,可以继续执行后续操作
    with open(file_path, 'r') as file:
        content = file.read()
        print(content)
else:
    print(f"Error: {file_path} does not exist.")

开发流程:

  1. 在代码中使用文件操作时,首先检查文件路径是否正确,文件是否存在以及当前用户是否有访问权限。
  2. 如果文件不存在或权限不足,抛出 FileNotFoundError 异常并提示用户。
  3. 如果文件路径是动态生成的,在使用文件前务必检查文件是否存在。
  4. 对于重复出现 FileNotFoundError 的情况,可以考虑将文件路径或名称抽象为可配置项,方便后续维护。
  5. 编写单元测试,覆盖各种可能出现 FileNotFoundError 的场景,确保代码健壮性。

总之,FileNotFoundError 的产生原因多种多样,关键是要理解底层原理,并在代码中采取相应的预防措施,避免出现此类异常。

Python 逐行读取文件 python readline(readline、readlines)函数使用方法(图文详解1)

np.eye,详解Numpy eye()(返回对角线上为1的数组)函数的作用与使用方法(图文详解1)

喜欢 (0)
[]
分享 (0)
关于作者:
流水不争先,争的是滔滔不绝