Python open()给出IOError:Errno 2没有这样的文件或目录

San*_*ago 56 python file-io file filenotfoundexception file-not-found

出于某种原因,我的代码无法打开一个简单的文件:

这是代码:

file1 = open('recentlyUpdated.yaml')
Run Code Online (Sandbox Code Playgroud)

错误是:

IOError: [Errno 2] No such file or directory: 'recentlyUpdated.yaml'
Run Code Online (Sandbox Code Playgroud)
  • 当然,我检查了这是文件的正确名称.
  • 我试过移动文件,给出文件open()的完整路径,似乎没有任何工作.

Lan*_*aru 62

  • 确保该文件存在:用于os.listdir()查看当前工作目录中的文件列表
  • 确保您位于您认为自己所在的目录中os.getcwd()(如果从IDE启动代码,则可能位于不同的目录中)
  • 然后你可以:
    • 调用os.chdir(dir),dir作为文件所在的文件夹,然后打开文件,其名称就像您正在做的那样.
    • 指定open呼叫中文件的绝对路径.
  • 如果您的路径使用反斜杠,请记住使用原始字符串,如下所示: dir = r'C:\Python32'
    • 如果你不使用原始字符串,你必须逃避每个反斜杠: 'C:\\User\\Bob\\...'
    • 正斜杠也适用于Windows 'C:/Python32',不需要转义.

让我澄清Python如何找到文件:

  • 一个绝对路径是与您的计算机的根目录开始,例如路径"C:\ Python的\脚本..",如果你使用的是Windows.
  • 一个相对路径是不与您的计算机的根目录开始的路径,而是相对于一些所谓的是working directory.您可以通过调用来查看Python的当前工作目录os.getcwd().

如果你尝试这样做open('sortedLists.yaml'),Python会看到你传递一个相对路径,所以它将搜索当前工作目录中的文件.调用os.chdir将更改当前工作目录.

示例:假设file.txt找到了C:\Folder.

要打开它,你可以这样做:

os.chdir(r'C:\Folder')
open('file.txt') #relative path, looks inside the current working directory
Run Code Online (Sandbox Code Playgroud)

要么

open(r'C:\Folder\file.txt') #full path
Run Code Online (Sandbox Code Playgroud)

  • + 1表示原始字符串r'' (3认同)
  • 在 Linux 上,像 `~/` 这样的主目录路径也不起作用。所以你需要使用`/home/user/temp/file.txt`而不是`~/temp/file.txt`。 (3认同)
  • 为os.listdir()建议+1。这是让您在键盘上留下难忘的表情之一,但是,如果在Windows 10上运行,请确保没有在现有扩展名中手动添加文件扩展名。Windows中的默认视图通常会隐藏扩展名,如果您犯了此错误,则它看起来可能像“ fileName.txt”,其中名称实际上是“ fileName.txt.txt”。要进行验证,请仔细查看os.listdir()的输出。此文件名不匹配还会导致“ [Errno 2] No such file or directory:”错误。我知道我知道。我的额头上仍然有空格键的印记。 (2认同)

Ara*_*Fey 19

最有可能的问题是您使用相对文件路径打开文件,但当前工作目录未设置为您认为的那样。

相对路径是相对于 python 脚本的位置的,这是一个常见的误解,但这是不正确的。相对文件路径总是相对于当前工作目录,当前工作目录不必是你的python 脚本的位置。

您有三个选择:


其他可能导致“找不到文件”错误的常见错误包括:


her*_*arn 6

该文件可能存在但可能具有不同的路径.尝试编写文件的绝对路径.

尝试os.listdir()函数来检查至少python看到的文件.

试试这样:

file1 = open(r'Drive:\Dir\recentlyUpdated.yaml')
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

302417 次

最近记录:

6 年,2 月 前